zoukankan      html  css  js  c++  java
  • java 中之经典多线程问题——进水放水

    public class ThreadInflowAndOutflow {

    public static void main(String[] args) {
    Water water=new Water();

    inflow fi=new inflow(water);
    outflow of=new outflow(water);

    Thread t1=new Thread(fi);
    Thread t2=new Thread(of);

    t1.start();
    t2.start();

    }

    }


    class Water{

    int count = 50;
    }
    class inflow implements Runnable{


    Water water;
    public inflow(Water water){
    this.water=water;
    }

    @Override
    public void run() {

    while(true){
    synchronized (water) {
    while(true){
    if(water.count>=20){
    water.notify();

    try {
    water.wait();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }

    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }

    water.count+=3;
    System.out.println("现在是在进水,水量为:"+water.count);
    }
    }
    }
    }

    }


    class outflow implements Runnable{

    Water water;
    public outflow(Water water){
    this.water=water;
    }


    @Override
    public void run() {

    while(true){
    synchronized (water) {
    while(true){
    if(water.count<=30){
    water.notify();

    try {
    water.wait();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }

    }

    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }

    water.count--;
    System.out.println("现在是放水,剩余水量为:"+water.count);
    }
    }
    }

    }

    }

  • 相关阅读:
    CSS3 @media 查询(制作响应式布局)
    seajs学习
    LABjs、RequireJS、SeaJS 区别
    jquery知识简单运用
    jquery拖拽
    选项卡简单版
    手风琴,回到顶部,无限运动
    分步运动
    多图片放大显示
    测试定时器、获取字符串的字节长度
  • 原文地址:https://www.cnblogs.com/1a2b/p/8919208.html
Copyright © 2011-2022 走看看