java join--Thread类
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();
}
}
越努力,越幸运!!!
good good study,day day up!!!
浙公网安备 33010602011771号