您的位置:首页 > 编程语言 > Java开发

java笔记:熟练掌握线程技术---基础篇之线程的协作和死锁的问题(下)

2012-01-15 04:29 537 查看
======================================================

注:本文源代码点此下载

======================================================

死锁的问题就是线程阻塞和同步结合时候所产生的毛病。因为线程可以被阻塞,并且对象具有同步控制方法来防止别的线程在锁没有被释放时候就访问该对象,那么当线程运行时候就会产生下面的问题:a在等待b执行完毕或者是等待b程通知自己被释放的时候,而b线程又等待别的线程,这样一直延伸下去,直到这个等待的线程链条上的某个线程又会等待第一个线程也就是a线程释放掉自己的锁,这就很像死循环了,线程之间相互等待互不相让,最终所有线程都无法执行了,这就是“死锁”。
谈到线程的死锁,就不得不提经典的死锁现象:哲学家就餐问题。哲学家就餐问题是计算机界著名的科学家艾兹格·迪科斯彻提出的,原问题是:有5名哲学家,这些哲学家花部分时间思考问题,部分时间就餐,当他们思考时候,不需要任何共享资源,但是当他们就餐时候,但是他们的餐桌旁只有有限的餐具,如果餐桌的食物是面条,那么一个哲学家需要两根筷子。但是哲学家们都很穷,因此他们只购买了5跟筷子,5跟筷子平分给5个哲学家,当一个哲学家就餐时候,该哲学家必须从他左边或者右边的哲学家里借到一根筷子,当借到筷子的哲学家就餐时候,被借筷子的哲学家就得等待了。

======================================================

在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定
这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐