标签:开始 cat str 锁定 nts vat 个人 rgs 先后
join---Thread类
设计一个模型
1.有两个线程 One Two ;Two加入到One里面
2.设计模型的时候 two线程在one的run里面创建 保证两个有先后顺序
3.two.join(); 无参数==0 有参数==2000
synchronized锁 非常的厉害
一旦对象被锁定 不释放的情况下 其它的对象都需要等待
有可能会产生一个死锁的效果;
哲学家就餐问题;4个人4根筷子;每一个人先拿左手的筷子,再拿右手的筷子,才能吃饭;
解决死锁的问题;
1.礼让 -产生时间差;
2.不要产生对象公用的问题;
package test06051; public class Kuaizi{ private int num; public Kuaizi(int num){ this.num=num; } public int getNum(){ return this.num; } }
package test06051; public class Zhexuejia extends Thread{ private String zname; private Kuaizi left; private Kuaizi right; private long time; public Zhexuejia(String name,Kuaizi left,Kuaizi right,long time){ this.zname=name; this.left=left; this.right=right; this.time=time; } public void run(){ try{ Thread.sleep(time); }catch(Exception e){ e.printStackTrace(); } synchronized(left){ System.out.println(zname+"拿起来了左手的筷子;"+this.left.getNum()); synchronized(right){ System.out.println(zname+"拿起来了右手的筷子;"+this.right.getNum()); System.out.println(zname+"开始吃饭"); } } } }
package test06051; public class TestMain{ public static void main(String[] args){ Kuaizi m=new Kuaizi(1); Kuaizi n=new Kuaizi(2); Kuaizi o=new Kuaizi(3); Kuaizi p=new Kuaizi(4); Zhexuejia a=new Zhexuejia("a",n,m,0); Zhexuejia b=new Zhexuejia("b",o,n,200); Zhexuejia c=new Zhexuejia("c",p,o,0); Zhexuejia d=new Zhexuejia("d",m,p,200); a.start(); b.start(); c.start(); d.start(); //a.run(); //b.run(); //c.run(); //d.run(); } }
标签:开始 cat str 锁定 nts vat 个人 rgs 先后
原文地址:https://www.cnblogs.com/canglongdao/p/13052514.html