黑马程序员技术交流社区
标题:
多线程死锁是问题
[打印本页]
作者:
公孙国禄
时间:
2016-3-27 00:04
标题:
多线程死锁是问题
package com.ithei;
public class Demo03 {
//定义多个线程共享的锁
public static Object LOK01=new Object();
public static Object LOK02= new Object();
public static void main(String[] args) {
Demo03thread thread01=new Demo03thread(true);
Demo03thread thread02=new Demo03thread(false);
thread01.start();
thread02.start();
}
package com.ithei;
public class Demo03thread extends Thread {
boolean flag;
public Demo03thread(boolean flag) {
this.flag = flag;
}
@Override
public void run() {
if(
flag
){
synchronized(Demo03.LOK01){
System.out.println("if(true)中的锁1");
try {
this.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
//
synchronized(Demo03.LOK02){
System.out.println("if(true)中的锁2");
}
}
}else{
synchronized (Demo03.LOK02) {
System.out.println("else(false)中的锁2");
synchronized(Demo03.LOK01){
System.out.println("else(false)中的锁1");
}
}
}
}
}
}
一开始我把if(
flag
)里的flag写成了true 然后打印结果是
if(true)中的锁1
if(true)中的锁2
if(true)中的锁1
if(true)中的锁2
这明显不是死锁 当我把true写成flag时就没有问题啦
if(true)中的锁1
else(false)中的锁2
为什么?有什么区别吗?
作者:
phoenix1992
时间:
2016-3-27 00:13
学习学习,长经验
作者:
唯爱唐嫣
时间:
2016-3-27 00:16
没学过 ,感觉很高端的样子
作者:
lipy1993
时间:
2016-3-27 00:20
学习了!
作者:
yi651312197
时间:
2016-3-27 00:23
学习了!!!
作者:
赵国政
时间:
2016-3-27 00:32
呦呦 ····!
作者:
1620698398
时间:
2016-3-27 00:43
今天好像是看懂了,但敲不出代码来,不算懂吧?
作者:
丿若恋灬如初
时间:
2016-3-27 00:56
学习学习
作者:
phoenix1992
时间:
2016-3-27 22:27
帅。。。
作者:
公孙国禄
时间:
2016-3-27 22:30
1620698398 发表于 2016-3-27 00:43
今天好像是看懂了,但敲不出代码来,不算懂吧?
那得多练不过要小心 因为可能一不小心就会把文件夹无限复制啦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2