读书人

麻烦大家看看该程序是否会造成死锁,该

发布时间: 2012-01-05 22:36:54 作者: rapoo

麻烦大家看看该程序是否会造成死锁
现有程序:
public class ThreadTest implements Runnable {
private static Object obj = new Object();

private String name = null;

public ThreadTest(String name) {
this.name = name;
}

public static void main(String[] args) {
new Thread(new ThreadTest( "tt1 ")).start();
new Thread(new ThreadTest( "tt2 ")).start();
}

public void run() {
while (true) {
System.out.println( "before " + this.name);
synchronized (obj) {
//执行一些其它代码
this.go();
}
System.out.println( "after " + this.name);
}
}

/**
* 可以直接被其他线程调用
*/
public void go() {
synchronized (obj) {
System.out.println(this.name + "running... ");
}
}
}

[解决办法]
如果while死循环里没有sleep,while循环所在的线程会狂占CPU
[解决办法]
不会,他们不具备死锁的条件.
[解决办法]
你的程序没有sleep,造成死机倒是可能的.
[解决办法]
不会死锁..

并不存在一个在等待池中的线程等另一个在等待池中线程的情况
[解决办法]
不会发生死锁现象

死机很有可能

产生死锁的必要条件是:1、互斥条件;2、不可剥夺条件(不可抢占);
3、部分分配;4、循环等待。

读书人网 >J2SE开发

热点推荐