Java线程的讨论与应用 - 编程入门网
。
.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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |