码迷,mamicode.com
首页 > 编程语言 > 详细

java join--Thread类

时间:2020-06-05 22:48:25      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:开始   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();
	}
}

  

 

 

java join--Thread类

标签:开始   cat   str   锁定   nts   vat   个人   rgs   先后   

原文地址:https://www.cnblogs.com/canglongdao/p/13052514.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!