您的位置:首页 > 编程语言 > Java开发

java多线程之死锁的例子

2017-07-25 17:55 211 查看
在java多线程编写程序中特别害怕的一种情况就是死锁,他会让程序死在哪里不在继续执行下面就来看一个死锁的例子:

/**
* 死锁的例子
*/
public class SiSuoTest {

public static void main(String[] args) {
LineTh ta1 = new LineTh(true);
LineTh ta2 = new LineTh(false);
Thread a = new Thread(ta1);
a.setName("a");//给线程起名字为a
Thread b = new Thread(ta2);
b.setName("b");//给线程起名字为b

a.start();
b.start();
}
}

class Luck {
public final static Object obj1 = new Object();
public final static Object obj2 = new Object();
}

class LineTh implements Runnable {
private boolean flag = false;

LineTh(boolean flage) {
flag = flage;
}
public void run() {
if (flag) {
while (true) {
synchronized (Luck.obj1) {
System.out.println("线程:"+Thread.currentThread().getName()+ "....  获取if 的 obj1");
synchronized (Luck.obj2) {
System.out.println("线程:"+Thread.currentThread().getName()   + "....  获取if 的 obj2");
}
}
}
} else {
while (true) {
synchronized (Luck.obj2) {
System.out.println("线程:"+Thread.currentThread().getName()   + "....  获取else 的 obj2");
synchronized (Luck.obj1) {
System.out.println("线程:"+Thread.currentThread().getName()+ "....  获取else 的 obj1");
}
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 多线程