zoukankan      html  css  js  c++  java
  • 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!!!
  • 相关阅读:
    Codeforces Round #535 (Div. 3) 1108C
    Codeforces Round #536 (Div. 2) B. Lunar New Year and Food Ordering
    Leetcode--136. Single Number(easy)
    Leetcode--572. Subtree of Another Tree(easy)
    Leetcode--101. Symmetric Tree(easy)
    Leetcode--680. Valid Palindrome II(easy)
    2017百度之星资格赛 1003 度度熊与邪恶大魔王 背包DP
    台州 OJ 1704 Cheapest Palindrome 回文 区间DP
    洛谷 P1019 单词接龙 深搜
    UVA 11882 Biggest Number 深搜 剪枝
  • 原文地址:https://www.cnblogs.com/canglongdao/p/13052514.html
Copyright © 2011-2022 走看看