java基礎第八天

/*




1. 5輛汽車過山洞,依次經過山洞。每輛車通過山洞花費10秒,使用多線程實現。


class Shan {


}



class Car extends Thread {


Shan shan;

String name;


public Car(String name, Shan shan) {

this.name = name;

this.shan = shan;

public void run() {

synchronized (shan) {

System.out.println("wo is " + name);

try {

Thread.sleep(2000);

}catch (Exception e){

}

}

}


}


class Demo {


public static void main(String[] arg) {


Shan shan = new Shan();

Car c1 = new Car("1",shan);

Car c2 = new Car("2",shan);

Car c3 = new Car("3",shan);

Car c4 = new Car("4",shan);

Car c5 = new Car("5",shan);

Car c11 = new Car("11",shan);

Car c12 = new Car("12",shan);

Car c13 = new Car("13",shan);

Car c14 = new Car("14",shan);

Car c15 = new Car("15",shan);



c1.start();

c2.start();

c3.start();

c4.start();

c5.start();


c11.start();

c12.start();

c13.start();

c14.start();

c15.start();

}


}



*/




/*






2. 用多線程模擬蜜蜂和熊的關係。

   蜜蜂是生產者,熊是消費者。蜜蜂生產蜂蜜是累加的過程,熊吃蜂蜜是批量(滿100吃掉)的過程。

   生產者和消費者之間使用通知方式告知對方。注意不能出現死鎖的現象。


class Fengmi {


int nu;


}


class Beam extends Thread{


Fengmi fm;

public Beam (Fengmi fm) {

this.fm = fm;

}

public void run() {

synchronized(fm) {

while(true) {

System.out.println(++fm.nu);

if (fm.nu == 100) {

fm.nu=100;

try {

fm.notify();

fm.wait();

   } catch (Exception e) {

}

}

}

}

}


}



class Bear extends Thread{

Fengmi fm;


public Bear (Fengmi fm){

this.fm = fm;

}


public void run() {

while(true) {

synchronized(fm) {

if (fm.nu == 100) {

fm.nu = 0;

System.out.println("bear 都吃了");

try {

fm.notify();

System.out.println("等待中");

fm.wait();

   } catch (Exception e) {

}


}

}


}


}


}


class Demo {


public static void main(String[] arg) {

Fengmi fm = new Fengmi();

Beam beam = new Beam(fm);

Bear bear = new Bear(fm);



beam.start();

bear.start();


}


}


*/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章