java疑问:求教各位前辈帮忙模拟一个线程死锁,刚学到线程,对于死锁概念不明确。
答案:1 悬赏:20 手机版
解决时间 2021-11-21 00:00
- 提问者网友:嗝是迷路的屁
- 2021-11-20 00:19
java疑问:求教各位前辈帮忙模拟一个线程死锁,刚学到线程,对于死锁概念不明确。
最佳答案
- 五星知识达人网友:蓝房子
- 2019-09-19 23:51
class ZhangSan {
public void say(){
System.out.println("张三对李四说:'你把书还我,我就把画给你。'");
}
public void get(){
System.out.println("张三得到书了。");
}
}
class LiSi {
public void say(){
System.out.println("李四对张三说:'你把画还我,我就把书给你。'");
}
public void get(){
System.out.println("李四得到画了。");
}
}
public class MyThreadSynchronized implements Runnable {
private static ZhangSan zs=new ZhangSan();
private static LiSi ls=new LiSi();
private boolean flag=false;
public void run(){
if (flag){
synchronized(zs){
zs.say();
try{
Thread.sleep(1000);
}catch(Exception e){
e.printStackTrace();
}
synchronized(ls){
zs.get();
}
}
}else{
synchronized(ls){
ls.say();
try{
Thread.sleep(1000);
}catch(Exception e){
e.printStackTrace();
}
synchronized(zs){
ls.get();
}
}
}
}
public static void main(String args[]){
MyThreadSynchronized m1=new MyThreadSynchronized();
MyThreadSynchronized m2=new MyThreadSynchronized();
m1.flag=true;
m2.flag=false;
new Thread(m1).start();
new Thread(m2).start();
}
}
public void say(){
System.out.println("张三对李四说:'你把书还我,我就把画给你。'");
}
public void get(){
System.out.println("张三得到书了。");
}
}
class LiSi {
public void say(){
System.out.println("李四对张三说:'你把画还我,我就把书给你。'");
}
public void get(){
System.out.println("李四得到画了。");
}
}
public class MyThreadSynchronized implements Runnable {
private static ZhangSan zs=new ZhangSan();
private static LiSi ls=new LiSi();
private boolean flag=false;
public void run(){
if (flag){
synchronized(zs){
zs.say();
try{
Thread.sleep(1000);
}catch(Exception e){
e.printStackTrace();
}
synchronized(ls){
zs.get();
}
}
}else{
synchronized(ls){
ls.say();
try{
Thread.sleep(1000);
}catch(Exception e){
e.printStackTrace();
}
synchronized(zs){
ls.get();
}
}
}
}
public static void main(String args[]){
MyThreadSynchronized m1=new MyThreadSynchronized();
MyThreadSynchronized m2=new MyThreadSynchronized();
m1.flag=true;
m2.flag=false;
new Thread(m1).start();
new Thread(m2).start();
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯