• 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);
    }
    }
    }

    }

    }

  • 相关阅读:
    求最低价格
    A*算法入门
    hdu 4715
    手动扩大栈内存,让AC无忧
    hdu 4710
    hdu 1698
    poj3468区间延迟更新模板题
    hdu 1059二进制优化背包问题
    2059龟兔赛跑
    水1276
  • 原文地址:https://www.cnblogs.com/1a2b/p/8919208.html
Copyright © 2020-2023  润新知