黑马程序员技术交流社区
标题: 线程死锁 [打印本页]
作者: fengkuangjava 时间: 2016-3-30 13:41
标题: 线程死锁
线程死锁:在实现多线程时,不要出现锁嵌套的行为,否则会出现线程相互等待的死锁情况。比如以下代码
package work5;
public class text {
/**
* @param args
*/
public static Object lock=new Object();
public static Object lock2=new Object();
public static void main(String[] args) {
Thea thea=new Thea(true);
Thea thea2=new Thea(false);
thea.start();
thea2.start();
}
}
package work5;
public class Thea extends Thread {
private boolean f;
private Thea(){}
public Thea(boolean f){
this.f=f;
}
@Override
public void run() {
while(true){
if(f){
synchronized (text.lock) {
System.out.println(1);
synchronized (text.lock2) {
System.out.println(2);
}
}
}else{
synchronized (text.lock2) {
System.out.println(3);
synchronized (text.lock) {
System.out.println(4);
}
}
}
}
}
}
作者: fengkuangjava 时间: 2016-3-30 13:47
这是程序运行结果,和你想的一样吗
-
捕获.PNG
(60.33 KB, 下载次数: 3)
作者: onceIme 时间: 2016-3-30 15:06
锁嵌套并不一定就会出现死锁,你把static关键字去掉,就不会出现;出现死锁根本原因是因为资源的抢夺
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |