黑马程序员技术交流社区
标题:
线程中死锁程序用的锁是什么?
[打印本页]
作者:
苏乞儿
时间:
2014-9-20 15:19
标题:
线程中死锁程序用的锁是什么?
</blockquote></div><div class="blockcode"><blockquote>/*class MyLock{
static MyLock locka=new MyLock();
static MyLock lockb=new MyLock();
}*/
class Tickets implements Runnable {
Object locka=new Object();
Object lockb=new Object();
private boolean b;
Tickets(boolean b){
this.b=b;
}
public void run(){
while(true){
if(true==b){
synchronized(locka){
System.out.println(" if......locka");
synchronized(lockb){
System.out.println(" if......lockb");
}
}
}else{
synchronized(lockb){
System.out.println(" else...lockb");
synchronized(locka){
System.out.println(" else...locka");
}
}
}
}
}
复制代码
如上程序,我在类中新建两个Object对象,并用它当死锁程序的锁,可以程序竟然没有锁住。而我在类外又重新建了MyLock对象竟然锁住了,为什么啊,不是都是不同的两个对象么?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2