快速业务通道

Java线程的讨论与应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
是说,它们己经被放到某一队列等待执行。处于就绪状态的线程何时可真正执行,取决于线程优先级以及队列的当前状况。线程的优先级如果相同,将遵循"先来先服务"的调度原则。

线程依据自身优先级进入等待队列的相应位置。某些系统线程具有最高优先级,这些最高优先级线程一旦进入就绪状态,将抢占当前正在执行的线程的处理器资源,当前线程只能重新在等待队列寻找自己的位置.这些具有最高优先级的线程执行完自己的任务之后,将睡眠一段时间,等待被某一事件唤醒.一旦被唤,这些线程就又开始抢占处理器资源。这些最高优先级线程通常用来执行一些关键性任务,如屏幕显示。

低优先级线程需等待更长的时间才能有机会运行。由于系统本身无法中止高优先级线程的执行,因此,如果你的程序中用到了优先级较高的线程对象,那么最好不时让这些线程放弃对处理器资源的控制权,以使其他线程能够有机运行。

Running

"Running"(运行)状态表明线程正在运行,该线己经拥有了对处理器的控制权,其代码目前正在运行。这个线程将一直运行直到运行完毕,除非运行过程的控制权被一优先级更高的线程强占。

综合起来,线程在如下3种情形之下将释放对处理器的控制权:

1.主动或被动地释放对处理器资源的控制权。这时,该线程必须再次进入等待队列,等待其他优先级高或相等线程执行完毕。

2.睡眠一段确定的时间,不进入等待队列。这段确定的时间段到期之后,重新开始运行。

3.等待某一事件唤醒自己。

Blocked

一个线程如果处于"Blocked"(堵塞)状态,那么暂时这个线程将无法进入就绪队列。处于堵塞状态的线程通常必须由某些事件才能唤醒。至于是何种事件,则取决于堵塞发生的原因:处于睡眠中的线程必须被堵塞一段固定的时间;被挂起、或处于消息等待状态的线程则必须由一外来事件唤醒。

Dead

Dead表示线程巳退出运行状态,并且不再进入就绪队列.其中原因可能是线程巳执行完毕(正常结束),也可能是该线程被另一线程所强行中断(kill)。

Java线程的讨论与应用(2)

时间:2010-12-08

三、创建和使用线程的基本方法

1.线程的产生

在Java语言中,可采用两种方式产生线程:一是实现一个Runnable界面,二是扩充一个Thread类.java.lang中定义了一个直接从根类Object中派生的Thread类.所有以这个类派生的子类或间接子类,均为线程。在这种方式中,需要作为一个线程执行的类只能继承、扩充单一的父类。下面的例子通过扩充Thread类,用该线程自己的实现来覆盖Thread.run(),产生一个新类Counter。run()方法是Counter类线程所作的全部操作.

importjava.lang.*; publicclassCounterextendsThread { publicvoidrun() {....} }

实现Runnable界面是最常用的产生线程的方法,它打破了扩充Thread类方式的限制。

Java语言源码中,Runnable界面只包含了一个抽象方法,其定义如下:

packagejava.lang.*; publicinterfaceRunnable{ publicabstractvoidrun(); }

所有实现了Runnable界面的类的对象都可以以线程方式执行.下面的例子产生与上面例子相同的类.可以看到counter类中使用了一个Thread类的变量.

importjava.lang.*; publicclasscounterimplementsRunnable {ThreadT; publicvoidrun() {...} }

2、基本方法

.publicsynchronizedvoidstart()

启动线程对象,调用其run()方法,随即返回。

.pubilcfinalvoidstop()

停止线程的执行。

.publicfinalvoidresume()

唤醒被挂起的线程。只在调用suspend()之后有效。

.publicfinalvoidsuspend()

挂起线程的执行。

.publicstaticvoidyield()

暂时中止当前正在执行的线程对象的运行。若存在其他线程,则随后调用下一个线程。

.publicstaticvoidsleep(longmills)throwsInterruptedException

使当前正处运行状态的线程睡眠mills毫秒

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号