------- android培训、java培训、期待与您交流! ----------
一.Java多线程死锁问题
1.死锁:两个同步进行嵌套,会产生死锁。在开发中要避免死锁。
示例代码:
class DeadLock implements Runnable{
private boolean flag;
//重载构造函数
DeadLock(boolean flag){
this.flag = flag;
}
public void run(){
if(flag){
synchronized(Lock.obj1){
System.out.println("if...obj1");
synchronized(Lock.obj2){
System.out.println("if...obj2");
}
}
}else{
synchronized(Lock.obj2){
System.out.println("else...obj2");
synchronized(Lock.obj1){
System.out.println("else...obj1");
}
}
}
}
}
//定义一个类,在类中创建两个synchronized的守护锁对象
class Lock{
//为了方便调用,使其静态化。
static Object obj1 = new Object();
static Object obj2 = new Object();
}
//编写测试类
public class Test{
public static void main(String[] args){
Thread t1 = new Thread(new DeadLock(true));
Thread t2 = new Thread(new DeadLock(false));
t1.start();
t2.start();
}
}