- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVA多线程死锁预防机制研究.PDF
JAVA多线程死锁预防机制研究
赵宗平,于宁宁
中国矿业大学信息与电气工程学院,江苏徐州 (221008)
E-mail :yuningning100@163.com
摘 要:为了提高程序的运行效率,现在大部分程序开发过程中都使用多线程,但是多线程
在提高效率的同时也容易发生死锁现象,从而给软件的安全性提出了较高的要求。文章详细
阐述了多线程的工作机制,结合具体程序模型,深入分析了Java 同步原因造成的死锁。系统
地分析了Java 并发线程中合理的解决lock 饥饿和lock 公平的重要性,给出了解决并发线程
间潜在死锁的机制。
关键词:死锁;多线程;lock 饥饿;lock 公平
1.引言
在计算机系统中,系统资源是有限的,但是往往涉及到进程或线程对有限资源的占用问
题。程序如果采用单线程运行,由于执行有序、资源分配问题相对简单,一般难以暴露出死
锁问题的严重性。但随着计算机技术的不断发展,软件系统变得庞大复杂,系统资源的种类日
益增多,而且许多资源是独占资源,又由于多线程的并发执行和资源的动态申请以及线程之间
的相互通信等,使得系统出现死锁现象大大增加。死锁的出现,使系统无法正常运行,给系统带
来了极大的危害。
本文基于Java多线程机制,分析了多线程运行时的死锁原因。并结合lock饥饿和lock公
平提出了预防死锁的机制,打破死锁的必要条件进行预防。最后给出了死锁预防执行示意图。
2 .死锁原理分析
2.1 多线程
当程序以单线程模型运行时时,一个进程中只能有一个线程,剩下的进程必须等待当前
的线程执行完,不会因为同时去抢夺有限的资源而发生死锁。这种模型的缺点在于系统完成
一个很小的任务都必须占用很长的时间,即单线程运行的工作效率比较低,因而在大型的项
目工程中多采用多线程进行。
多线程模型是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。使用
线程的好处有以下几点[1] :
1、使用线程可以把占据长时间的程序中的任务放到后台去处理
2 、程序的运行速度可能加快
3、在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,可以利用线程
释放一些珍贵的资源如内存占用等等。
多线程模型比单线程模型的执行速度快,由于降低了系统的负载,因而可以优化来减少
系统的冗余时间。这些应用程序一般比较复杂,因而必须提供线程同步以保证线程不会并发
的请求相同的资源,因而导致竞争情况的发生。同时有必要提供一个锁机制,以防止系统死
锁的发生。
2.2 死锁模型的建立
当程序中多个线程同时争夺有限的资源而又不能够得到所需要的锁时,多个线程同时被
阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程
序不可能正常终止。导致死锁的根源在于不适当地运用“synchronized”关键字[2]来管理线程对
- 1 -
特定对象的访问。“synchronized”关键词的作用是,确保在某个时刻只有一个线程被允许执
行特定的代码块,因此,被允许执行的线程首先必须拥有对变量或对象的排他性的访问权。
当线程访问对象时,线程会给对象加锁,而这个锁导致其它也想访问同一对象的线程被阻塞,
直至第一个线程释放它加在对象上的锁。死锁伪代码如下:
package test;//导入包
public class Thread1 extends Thread {//定义Thread1继承Thread类
public int flag = 1;//设置标记变量
public static Object o1 = new Object(), o2 = new Object();
public Thread1(){}
public void run() {
System.out.println(flag + flag);
if (flag == 1)
您可能关注的文档
- CUsersAdministratorDesktop1OMRONCPM2AH应用案例介绍.PDF
- C语言程序设计-西安建筑科技大学-教务处.PDF
- C语言程序设计TheClanguageProgramming.PDF
- 含c0z气体混合物在60 ̄C时的混合性质.PDF
- 含裂纹管道的失效评定曲线的实例验证.PDF
- DatabaseSYstems主题五数据处理性能提升技术-湖南大学信息.PDF
- DataMininginFilmReviewwithSentimentAnalysis基于情感分析的.PDF
- DC-061T数字式温度控制设备.PDF
- 吸收合并河南省漯河市双汇实业集团有限责任公司暨关联交易.PDF
- DC-062T数字式温度控制设备.PDF
文档评论(0)