java中用线程解决进出水问题

//进水
class Inflow implements Runnable{
	
	//水对象
	Water wat;
	public Inflow(Water w){
		this.wat = w;
	}
	
	@Override
	public void run() {
		//进水				
		while (true) {
			synchronized (wat) {
				while (true) {
					if (wat.count >= 50) {
						wat.notify();
						try {
							wat.wait();
						} catch (InterruptedException e) {
							e.printStackTrace();
						}
					}
					try {
						//睡眠线程
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					wat.count++;
					System.out.println("现在是在进水,水量为:" + wat.count);
				}					
			}
		
		}
	}
}


//出水
class Outflow implements Runnable{
	
	Water wat;
	public Outflow(Water w){
		this.wat = w;
	}
	
	@Override
	public void run() {
		//出水						
		while (true) {
			//线程锁
			synchronized (wat) {
				while (true) {
					if (wat.count <= 0) {
						wat.notify();
						try {
							wat.wait();
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					wat.count--;
					System.out.println("现在是在放水,剩余水量为:" + wat.count);	
				}									
			}
		
		}
	}
}
class Water{
	
	int count = 50;
	
}
public class demo5 {

	public static void main(String[] args) {
		//创建水对象
		Water Water = new Water();
		//进水对象
		Inflow in = new Inflow(Water);
		//放水对象
		Outflow out = new Outflow(Water);
		
		//
		Thread thread = new Thread(in);
		Thread the = new Thread(out);
		
		//开启线程
		thread.start();
		the.start();
	}

}

  

posted on 2016-12-03 08:26  ljyhyy  阅读(448)  评论(0编辑  收藏  举报