標籤:family 汽車
5輛汽車過山洞,依次經過山洞。每輛車通過山洞花費10秒,使用多線程實現。
class Cave{//private boolean deng=true;//public synchronized getDeng(){//if(deng=true){//}//}}class Car extends Thread{private String name;private Cave cave;public Car(){System.out.println("car^^^^^^^^");}public Car(String name,Cave cave){this.name=name;this.cave=cave;}//public void run(){synchronized(cave){System.out.println(name+"進洞");try{Thread.sleep(1000);System.out.println(name+"出洞");}catch (Exception e){}}}}class CaveDemno{public static void main(String[] args){Cave cave=new Cave();Car c1=new Car("car1",cave);Car c2=new Car("car2",cave);Car c3=new Car("car3",cave);Car c4=new Car("car4",cave);Car c5=new Car("car5",cave);c1.start();c2.start();c3.start();c4.start();c5.start();}}
2. 用多線程類比蜜蜂和熊的關係。
蜜蜂是生產者,熊是消費者。蜜蜂生產蜂蜜是累加的過程,熊吃蜂蜜是批量(滿100吃掉)的過程。
生產者和消費者之間使用通知方式告知對方。注意不能出現死結的現象。
/*
**用多線程類比蜜蜂和熊的關係。
**蜜蜂是生產者,熊是消費者。蜜蜂生產蜂蜜是累加的過程,熊吃蜂蜜是批量(滿100吃掉)的過程。
**生產者和消費者之間使用通知方式告知對方。注意不能出現死結的現象。
*/
/*
**用多線程類比蜜蜂和熊的關係。
**蜜蜂是生產者,熊是消費者。蜜蜂生產蜂蜜是累加的過程,熊吃蜂蜜是批量(滿100吃掉)的過程。
**生產者和消費者之間使用通知方式告知對方。注意不能出現死結的現象。
*/
import java.util.ArrayList;import java.util.List;class Bee extends Thread{final static int MAX=100;java.util.List<Integer> list;String name;public Bee(java.util.List<Integer> list,String name){this.list=list;this.name=name;}//runpublic void run(){int i=1;while(true){//對集合進行同步synchronized(list){int size=list.size();if(size >= MAX){try{list.wait();}catch(Exception e){ }}else{//不夠100則生產蜂蜜list.add(new Integer(i));System.out.println("生產蜂蜜:"+i);i++;list.notifyaAll();}}//yield();}}}//狗熊類class Bear extends Thread{java.util.List<Integer> list;String name;public Bear(java.util.List<Integer> list,String name){this.list=list;this.name=name;}//吃蜜public void run(){while(true){synchronized(list){//對集合進行同步操作int size=list.size();if(size<=MAX){try{list.wait();}catch(Exception e){}}else{Integer i=list.remove(99);//吃完System.out.println("狗熊吃蜜:"+i);list.notifyAll();}}//yield();}}}class BearDemo{public static void main(String[] args){java.util.List<Integer> list=new java.util.ArrayList<Integer>();Bee bee=new Bee(list,"蜜蜂");Bear bear=new Bear(list,"狗熊");bee.start();bear.start();}}
大資料第8天作業