** 死锁**
每个人都拥有其他人需要的资源,同时又等待其他人拥有的资源,并且每个人在获得所有需要的资源之前都不会放弃已经拥有的资源。
当多个线程完成功能需要同时获取多个共享资源的时候可能会导致死锁。
死锁的条件:
1两个以上的线程
2至少两个锁以上
3同步中嵌套同步
/*
*男孩
*/
public class Boy extends Thread{
@Override
public void run() {
while (true) {
synchronized (Lock.locka) {
System.out.println("男孩拿着locka");
synchronized (Lock.lockb) {
System.out.println("男孩拿到lockb");
System.out.println("男孩可以吃了....");
}
}
}
}
}
/*
* 女孩
*/
public class Girl extends Thread{
@Override
public void run() {
while (true) {
synchronized (Lock.lockb) {
System.out.println("女孩拿着lockb");
synchronized (Lock.locka) {
System.out.println("女孩拿到了locka");
System.out.println("女孩可以吃了...");
}
}
}
}
}
当女孩拿到b锁还未拿到a锁的时候,男孩拿到a锁,这时就会造成死锁 谁都不让步,程序锁死