Java线程:并发协作-死锁
线程发生死锁可能性很小,即使看似可能发生死锁的代码,在运行时发生死锁的可能性也是小之又小。
发生死锁的原因一般是两个对象的锁相互等待造成的。
在《Java线程:线程的同步与锁》一文中,简述死锁的概念与简单例子,但是所给的例子是不完整的,这里给出一个完整的例子。
public class Test
{
public static void main(String[]
args) {
DeadlockRisk
dead = new DeadlockRisk();
MyThread
t1 = new MyThread(dead,
1, 2);
MyThread
t2 = new MyThread(dead,
3, 4);
MyThread
t3 = new MyThread(dead,
5, 6);
MyThread
t4 = new MyThread(dead,
7, 8);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
class MyThread extends Thread
{
private DeadlockRisk
dead;
private int a,
b;
MyThread(DeadlockRisk
dead, int a, int b)
{
this.dead =
dead;