package com.thread.test;
public class DeadLockTest implements Runnable{
public int flag=1;
static Object obj1=new Object(),obj2=new Object();
@Override
public void run() {
System.out.println(flag);
if(flag==1){
synchronized (obj1) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (obj2) {
System.out.println("obj2");
}
}
}
if(flag==0){
synchronized (obj2) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (obj1) {
System.out.println("obj1");
}
}
}
}
public static void main(String[] args) {
DeadLockTest d1=new DeadLockTest();
DeadLockTest d2=new DeadLockTest();
d1.flag=1;
d1.flag=0;
Thread t1=new Thread(d1);
Thread t2=new Thread(d2);
t1.start();
t2.start();
}
}
Java模拟Thread线程死锁
最新推荐文章于 2023-07-27 11:22:27 发布
本文通过一个具体的Java示例代码展示了如何在多线程环境中产生死锁现象。代码中定义了两个对象并使用synchronized关键字尝试获取不同的锁,当两个线程分别持有其中一个锁并尝试获取另一个锁时,便会产生死锁。
884

被折叠的 条评论
为什么被折叠?



