线程等待两个线程通知

时间:2017-01-24 09:53:56

标签: java multithreading

我将以一个例子来解释。我有一个建筑工地,需要建造一座建筑。让我们说建筑需要砖和水泥才能继续建造。 (在当前材料状态下具有两个私有变量的线程对象)。该建筑有一辆卡车和一辆面包车,为其提供所需材料(水泥车和砖车,两个独立的螺纹物)。建筑物每秒花费100公斤水泥和50公斤砖。如果两者中的任何一个都小于任何时刻,则施工停止,直到卡车和货车为其提供足够的材料。

我不知道如何解决这个问题,因为有两个条件需要满足(足够的条款和足够的水分)。为了解决这个问题,以下部分代码是否有意义?

Building extends Thread
//...
public void run() {
    super.run();

    lock.lock();

    while (true) {
        if (cement < 100 || bricks < 50)
            try {
                insufficientBricksawait(); //Can you do something like this?
                insufficientCementawait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        spent += 150;
        bricks -= 50;
        cement -= 100;

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

}

当必须等待两个线程通知它满足条件时,我如何向Building发信号以继续工作?

0 个答案:

没有答案