本帖最后由 友来友网 于 2014-6-13 17:58 编辑
今天下午学习了一下线程的死锁,写了个练习
- public class TestDeadLock implements Runnable {
- public int flag = 1;
- static Object o1 = new Object(), o2 = new Object();
-
- public void run() {
- System.out.println("flag: "+flag);
- if(flag == 1) {
- synchronized(o1) {
- try {
- Thread.sleep(500);
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- synchronized(o2) {
- System.out.println("1");
- }
- } else {
- synchronized(o2) {
- try {
- Thread.sleep(500);
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- synchronized(o1) {
- System.out.println("2");
- }
- }
- }
-
- public static void main(String[] args) {
- TestDeadLock td1 = new TestDeadLock();
- TestDeadLock td2 = new TestDeadLock();
- td1.flag = 1;
- td2.flag = 0;
- new Thread(td1).start();
- new Thread(td2).start();
- }
- }
复制代码
按道理这段代码应该出现死锁的情况,可是为什么没有出现呢
|