学生类
public class Student extends Thread {
private String studentName;
private Water water;
public Student(String StudentName ,Water water){
super ();
this.studentName = studentName;
this.water = water ;
}
public void receiveWater(){
System.out.println(studentName+"从教室跑到饮水机");
water.flowWater(studentName);
System.out.println(studentName+"跑回教室");
}
public void run(){
receiveWater();
}
流水的类
public class Water {
int studentNumber;
public synchronized void flowWater(String studentName){
synchronized(this){
++studentNumber;
System.out.println("开始为"+studentName+"流水");
try{
Thread.sleep(3000);
}catch (InterruptedException e ){
e.printStackTrace();
}
System.out.println("结束为"+studentName+"流水");
if(studentNumber<4) {
try{
wait();
}catch (InterruptedException e){
e.printStackTrace();
}
}else {
notifyAll();
}
} }}
}
实现类
public class TestWater {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Water water = new Water();
Student xiaochang = new Student("小常",water );
Student xiaoshang = new Student("小尚",water );
Student xiaowang = new Student("小王",water );
Student xiaoliu = new Student("小刘",water );
xiaochang.start();
xiaoshang.start();
xiaowang.start();
xiaoliu.start();
}
}
------解决思路----------------------
检查一下大小写的问题。