, . ; .
, , , . :
- A Mutex A
- B Mutex B
- A Mutex B, B!
- B Mutex A, A!
. - 1.
, , , . .
, , , , , . :
- A Mutex A_A ( A)
- B Mutex B_B ( B)
- A Mutex B_A ( A)
- B Mutex A_B ( B)
, ( Mutex A Mutex B) .
, , :
Semaphore sem1 = new Semaphore(1);
Semaphore sem2 = new Semaphore(1);
public class deadlockTest1 implements Runnable
{
public void run()
{
sem1.acquire();
Thread.sleep(1000);
sem2.acquire();
}
}
public class deadlockTest2 implements Runnable
{
public void run()
{
sem2.acquire();
Thread.sleep(1000);
sem1.acquire();
}
}
:
public static void main(String[] args)
{
deadlockTest1 tester1 = new deadlockTest1();
deadlockTest2 tester2 = new deadlockTest2();
tester1.run();
tester2.run();
}
, . , ( sem1, B lock sem2), 1 . ( sem2, B sem1), , , .