经典多线程问题(七)-H20的生产问题

package com.example.demo;

import java.util.concurrent.Semaphore;

/**
 * @ClassName H2O
 * @Description: 1117. H2O 生成(多线程)
 * @Author xtanb
 * @Date 2019/9/23
 * @Version V1.0
 **/
public class H2O {
    private Semaphore h = new Semaphore(2);
    private Semaphore o = new Semaphore(0);

    public H2O() {

    }

    public void hydrogen(Runnable releaseHydrogen) throws InterruptedException {
        h.acquire();
        releaseHydrogen.run();
        o.release();
    }

    public void oxygen(Runnable releaseOxygen) throws InterruptedException {
        o.acquire(2);
        releaseOxygen.run();
        h.release(2);
    }
}

 

posted @ 2019-10-22 11:02  helloworldmybokeyuan  阅读(226)  评论(0编辑  收藏  举报