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;
}
//run
public 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();
}
}
转载于:https://blog.51cto.com/wwywinnie/1752778