java - 我如何解决这种死锁情况?
问题描述
我试图产生一个死锁条件。我能够使用下面的代码生成它。
class MyCode {
public static Object lock1 = new Object();
public static Object lock2 = new Object();
public static void main (String[] args) throws Exception{
Thread t1 = new Thread(()-> {
synchronized(lock1) {
System.out.println("Took lock on object" + lock1);
try {
Thread.sleep(10000);
}catch(Exception e) {}
synchronized(lock2) {
System.out.println("hello world 1....");
}
}
});
Thread t2 = new Thread(()-> {
synchronized(lock2) {
System.out.println("Took lock on object" + lock2);
try {
Thread.sleep(10000);
}catch(Exception e) {}
synchronized(lock1) {
System.out.println("hello world 2....");
}
}
});
t1.start();
t2.start();
System.out.println("Hello Java");
}
}
我的要求是使用这 2 个线程执行代码。
我怎样才能做到这一点?在Java中有没有其他方法我可以使用等待/通知方法来做到这一点?
提前致谢。
解决方案
推荐阅读
- android - 是否有与 JavaFX 的 Timeline 类等效的 Android?
- javascript - 为什么他写movie.haveWatched、movie.title、movie.rating?
- python - Python 递归函数 - 引用当前和以前的参数
- arrays - nodejs循环数组创建对象
- php - 将自定义帖子类型循环限制为 1 个结果
- reactjs - 从 heroku 应用上传数据失败。CORS 错误
- arrays - 将 json 对象作为 json 数组发送到 API
- c - 在 C 中使用指针的练习给出了模棱两可的输出
- php - 用于 Wordpress 的 VPS zlib.output_compression,我应该启用吗?
- python - Scipy:采样数据点具有相似的值