麻烦大家看看该程序是否会造成死锁
现有程序:
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、循环等待。