快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

.publicfinalvoidwait()throwsInterruptedException

使线程进入等待状态,直到被另一线程唤醒

.publicfinalvoidmotify()

把线程状态的变化通知给另一等待线程。

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

时间:2010-12-08

四、线程的同步

线程的使用,主要在于一个进程中多个线程的协同工作,所以线程的同步就很重要。线程的同步用于线程共享数据,转换和控制线程的执行,保证内存的一致性。

在Java中,运行环境使用程序(Monitor)来解决线程同步的问题。管程是一种并发同步机制,它包括用于分配一个特定的共享资源或一组共享资源的数据和方法.

Java为每一个拥有synchronized方法的对象实例提供了一个唯一的管程。为了完成分配资源的功能,线程必须调用管程入口。管程入口就是synchronized方法入口。当调用同步(synchronized)方法时,该线程就获得了该管程。

管程边界上实行严格的互斥,在同一时刻,只允许一个线程进入管程;当管程中已有了一个线程时,其它希望进入管程的线程必须等待,这种等待是由管程自动管理的。

如果调用管程入口的线程发现资源已被分配,管程中的这个线程将调用等待操作wait()。进入wait()后,该线程放弃占用管程,在管程外面等待,以便其它线程进入管程。

最终,占用资源的线程将调用一个管程的入口把资源归还给系统,此时,该线程需调用一个通知操作notify(),通知系统允许其中一个等待的线程获得管程并得到资源。被通知的线程是排队的,从而避免无限拖延。

在Java.lang中提供了用来编写管程的两个方法:notify()和wait()。此外还有notifyAll(),它通知所有等待的线程,使它们竞争管程,结果是其中一个获得管程,其佘返回等待状态。

五、线程的控制

线程的控制分为停止线程和启动线程。

.publicfinalvoidsuspend()

挂起线程的执行。

.publicfinalvoidresume()

唤醒被挂起的线程。使一个暂停的线程可用于调度。

因为线程的调度为抢占式机制,也可使用线程的优先级来对线程进行控制。

.publicfinalvoidsetPriority(intnewPriority)

设置线程优先级。

.publicfinalintgetPriority()

获取并返回线程的优先级。

线程的优先级用于在运行队列中给线程排序,Java提供的抢占式调度,使得高级别的线程先运行。

六、线程的应用

在实际应用中,线程使用的范围很广,可用于控制实时数据处理、快速的网络服务,还有更快的图象绘制和打印,以及数据库中的数据的取回和处理等等。在Java中一个在不停运行的提供一些基本服务的例子是垃圾收集线程,垃圾收集线程,。该线程由Java虚拟机提供。它扫描程序中不再被访问的变量,将其所占的系统资源释放给系统。

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