快速业务通道

解析Java的多线程机制 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
网络连接或数据库连接等数据吞吐速度相对较慢的资源时,多线程应用程序是非常有利的。基于Internet的应用程序有必要是多线程类型的,例如,当开发要支持大量客户机的服务器端应用程序时,可以将应用程序创建成多线程形式来响应客户端的连接请求,使每个连接用户独占一个客户端连接线程。这样,用户感觉服务器只为连接用户自己服务,从而缩短了服务器的客户端响应时间。

解析Java的多线程机制(2)

时间:2011-01-22

三、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();

}

}

解析Java的多线程机制(3)

时间:2011-01-22

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应用程序的多个线程共享同一进程的数据资源,多个用户线程在并发运行过程中可能同时访问具有敏感性的内容。在Java中定义了线程同步的概念,实现对共享资源的一致性维护。下面以笔者最近开发的移动通信计费系统中线程间同步控制方法,说明Java语言中多线程同步方式的实现过程。

在没有多线程同步控制策略条件下的客户账户类定义框架代码如下所示:

public class RegisterAccount 

{ 

float fBalance; 

//客户缴费方法 

public void deposit(float fFees){ fBalance += fFees; } 

//通话计费方法 

public void withdraw(float fFees){ fBalance -= fFees; } 

&helli

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号