Java 学习————线程直接通信

来源:互联网 发布:linux配置java环境 编辑:程序博客网 时间:2024/06/06 05:55
class Water{//水塘类static Object water=new Object();static int total=6;  //假设水塘总共可以含水量为6static int mqsl=3;   //假设水塘中拥有含水量为3static int ps=0;     //假设水塘目前含水量为0}class ThreadA extends Thread{//排水类void pswork(){synchronized(Water.water){System.out.println("水塘中是否没有水: "+isEmpty());if(isEmpty()){try{Water.water.wait();}catch(InterruptedException e){e.printStackTrace();}}else{Water.ps++;System.out.println("水塘目前排水水量 "+Water.ps);}}}public void run(){while(Water.mqsl<Water.total){if(isEmpty())System.out.println("水塘目前没有水,排水线程被挂起");System.out.println("排水工作开始");pswork();try{sleep(1000);}catch(InterruptedException e){e.printStackTrace();}}}public boolean isEmpty(){return Water.mqsl==Water.ps?true:false;}}class ThreadB extends Thread{//进水类void jswork(){synchronized(Water.water){Water.mqsl++;Water.water.notify();System.out.println("水塘目前进水量为 "+Water.mqsl);}}public void run(){while(Water.mqsl<Water.total){System.out.println("进水工作开始");jswork();try{sleep(3000);}catch(InterruptedException e){e.printStackTrace();}}}}public class Tongxin {public static void main(String[] args) {// TODO Auto-generated method stubThreadA threadA=new ThreadA();ThreadB threadB=new ThreadB();threadB.start();threadA.start();}}

0 0
原创粉丝点击