选择显示字体大小

java教程:解析java的多线程机制(3)

    另外,如果应用程序必须等待网络连接或数据库连接等数据吞吐速度相对较慢的资源时,多线程应用程序是非常有利的。基于inte.net的应用程序有必要是多线程类型的,例如,当开发要支持大量客户机的服务器端应用程序时,可以将应用程序创建成多线程形式来响应客户端的连接请求,使每个连接用户独占一个客户端连接线程。这样,用户感觉服务器只为连接用户自己服务,从而缩短了服务器的客户端响应时间。
  
  
  java语言的多线程程序设计方法
  
  
  利用java语言实现多线程应用程序的方法很简单。根据多线程应用程序继承或实现对象的不同可以采用两种方式:一种是应用程序的并发运行对象直接继承java线程类thread;另外一种方式是定义并发执行对象实现runnable接口。
  
  继承thread类的多线程程序设计方法
  
  thread 类是jdk中定义的用于控制线程对象的类,在该类中封装了用于进行线程控制的方法。见下面的示例代码:
  
  

//consumer.java 
  import java.util.*;
  class consumer extends thread
  {
   int ntime;
   string strconsumer;
   public consumer(int ntime, string strconsumer)
   {
   this.ntime = ntime;
   this.strconsumer = strconsumer;
   }
   public void run()
   {
  while(true)
  {
   try
  {
   system.out.println("consumer name:"+strconsumer+"\n");
   thread.sleep(ntime);
   }
  catch(exception e)
  {
   e.printstacktrace();
   }
  }
   }
  static public void main(string args[])
  {
   consumer aconsumer = new consumer (1000, "aconsumer");
   aconsumer.start();
   consumer bconsumer = new consumer (2000, "bconsumer");
   bconsumer.start();
   consumer cconsumer = new consumer (3000, "cconsumer ");
   cconsumer.start();
  }
  }

  
  
  
  
  从上面的程序代码可以看出:多线程执行地下consumer继承java语言中的线程类thread并且在main方法中创建了三个consumer对象的实例。当调用对象实例的start方法时,自动调用consumer类中定义的run方法启动对象线程运行。线程运行的结果是每间隔ntime时间打印出对象实例中的字符串成员变量strconsumer的内容。
  
  可以总结出继承thread类的多线程程序设计方法是使应用程序类继承thread类并且在该类的run方法中实现并发性处理过程。
  
  实现runnable接口的多线程程序设计方法
  
  java语言中提供的另外一种实现多线程应用程序的方法是多线程对象实现runnable接口并且在该类中定义用于启动线程的run方法。这种定义方式的好处在于多线程应用对象可以继承其它对象而不是必须继承thread类,从而能够增加类定义的逻辑性。
  
  实现runnable接口的多线程应用程序框架代码如下所示:
  
  //consumer.java
  import java.util.*;
  class consumer implements runnable
  {
   … …
  public consumer(int ntime, string strconsumer){… …}
  public void run(){… …}
  static public void main(string args[])
  {
  thread aconsumer = new thread(new consumer(1000, "aconsumer"));
  aconsumer.start();
  //其它对象实例的运行线程
   //… …
   }
  }
  
  从上述代码可以看出:该类实现了runnable接口并且在该类中定义了run方法。这种多线程应用程序的实现方式与继承thread类的多线程应用程序的重要区别在于启动多线程对象的方法设计方法不同。在上述代码中,通过创建thread对象实例并且将应用对象作为创建thread类实例的参数。
转自: 赛迪网


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons