多线程死锁问题:
1.出现的原因:
有两个线程t1和t2,两把锁locka 和lockb,t1拿着locka去拿lockb,t2拿着lockb去拿locka就会出现死锁问题。
public class DeadLockDemo {
public static void main(String[] args) {
DeadLock deadLock1=new DeadLock(true);
DeadLock deadLock2=new DeadLock(false);
Thread thread1=new Thread(deadLock1);
Thread thread2=new Thread(deadLock2);
thread1.start();
thread2.start();
}
}
class DeadLock implements Runnable{
private boolean flag;
public DeadLock(boolean flag) {
this.flag=flag;
}
@Override
public void run() {
if (flag){
while (true) {
synchronized (MyLock.locka) {
System.out.println("if.....locka");
synchronized (MyLock.lockb) {
System.out.println("if.....lockb");
}
}
}
}else {
while (true) {
synchronized (MyLock.lockb) {
System.out.println("else.....lockb");
synchronized (MyLock.locka) {
System.out.println("else.....locka");
}
}
}
}
}
}
class MyLock{
public static MyLock locka=new MyLock();
public static MyLock lockb=new MyLock();
}