/**
* 书本:《Thinking In Java》
* 功能:哲学家进餐问题
* 作为哲学家,他们很穷,所以他们只能买五根筷子。他们围坐在桌子周围,每人之间放一根筷子。当一个哲学家要就餐的时候了,这个哲学家必须同时得到左边
* 和右边的筷子。如果一个哲学家左边或右边的筷子已经有人在使用筷子了,那么这个哲学家就必须等待,直至可以得到必须的筷子
* 文件:Chopstick.java
* ...
分类:
编程语言 时间:
2015-05-23 10:07:37
阅读次数:
136
在实际编程中,要尽量避免死锁情况的出现,但是有些面试中故意让你写一个死锁的程序,这似乎也不太简单(有些公司会出这样的面试题),下面讲解一个简单的死锁例子。
代码说明:
第一步:
当DeadLock的线程对象td1的属性flag为1时,第一个线程先锁定资源O1,睡眠500毫秒,然后尝试锁定资源O2(假如没有被锁定的话);
第二步:而第一个线程在睡眠的时候,第二个线程对象td2启动了,其属性f...
分类:
编程语言 时间:
2015-05-16 10:31:27
阅读次数:
138
需要避免的与多任务处理有关的特殊错误类型是死锁(deadlock)。死锁发生在当两个线程对一对同步对象有循环依赖关系时。例如,假定一个线程进入了对象X的管程而另一个线程进入了对象Y的管程。如果X的线程试图调用Y的同步方法,它将像预料的一样被锁定。而Y的线程同样希望调用X的一些同步方法,线程永远等待,...
分类:
编程语言 时间:
2015-05-16 09:03:30
阅读次数:
129
原文链接 作者:Jakob
Jenkov 译者:申章 校对:丁一
java中死锁是两个或更多线程阻塞着等待其它处于死锁状态的线程所持有的锁。死锁通常发生在多个线程同时但以不同的顺序请求同一组锁的时候。
例如,如果线程1锁住了A,然后尝试对B进行加锁,同时线程2已经锁住了B,接着尝试对A进行加锁,这时死锁就发生了。线程1永远得不到B,线程2也永远得不到A,并且它们永远也不会知道发生了...
分类:
编程语言 时间:
2015-05-13 19:50:04
阅读次数:
150
原文链接作者:Jakob Jenkov译者:申章校对:丁一java中死锁是两个或更多线程阻塞着等待其它处于死锁状态的线程所持有的锁。死锁通常发生在多个线程同时但以不同的顺序请求同一组锁的时候。例如,如果线程1锁住了A,然后尝试对B进行加锁,同时线程2已经锁住了B,接着尝试对A进行加锁,这时死锁就发生...
分类:
编程语言 时间:
2015-05-13 19:19:33
阅读次数:
126
前言:在生产环境中经常发生服务器内存溢出,假死或者线程死锁等异常,导致服务不可用。我们经常使用的解决方法是通过分析错误日记,然后去寻找代码到底哪里出现了问题,这样的方式也许会奏效,但是排查起来耗费时间比较多,或者说本身代码本身就没有错,而是访问量大时候消耗内存太多,垃圾对象没有及时回收等等其他情况导致的,这样排查异常起来异常困难,那么有没有一些可视化的工具,帮助我们可以详细地查看当前应用服务的内存情...
分类:
系统相关 时间:
2015-05-06 15:06:07
阅读次数:
285
现在的面试挺蛋疼,为了考察大家的语言掌握水平,类似这样的题特别多,不过在某个角度来说确实能看出一个人对某个知识点的理解,就比如今天这个死锁的小例子,主要考察大家对线程死锁概念的理解程度,也考察大家对java语言的敲代码水平,下面是一个死锁的简单例子:...
分类:
编程语言 时间:
2015-05-02 09:41:01
阅读次数:
182
Java程序基本都要涉及到多线程,而在多线程环境中不可避免的要遇到线程死锁的问题。Java不像数据库那么能够检测到死锁,然后进行处理,Java中的死锁问题,只能通过程序员自己写代码时避免引入死锁的可能性来解决。1. Java中导致死锁的原因Java中死锁最简单的情况是,一个线程T1持有锁L1并且申请...
分类:
编程语言 时间:
2015-04-22 20:26:56
阅读次数:
153
//申明:本文转载自http://www.cnblogs.com/digdeep/p/4448148.html 《Java多线程中的死锁问题》Java程序基本都要涉及到多线程,而在多线程环境中不可避免的要遇到线程死锁的问题。Java不像数据库那么能够检测到死锁,然后进行处理,Java中的死锁问题,只...
分类:
编程语言 时间:
2015-04-22 20:24:24
阅读次数:
162
据说再高的高手在写多线程程序的时候都难确保不会产生死锁,死锁的调试也就成为一个比较常见的问题,假设有下面这样一个问题: 一个正在生产环境下运行的进程死锁了,或者你只是在跑一个程序,并没有在调试器里面打开它,然后发现没有响应,日志 输出也停止了。由于你是一个有经验的程序员,会想到“我刚刚加上了新的锁....
分类:
编程语言 时间:
2015-04-20 14:35:42
阅读次数:
231