信号没有在java中唤醒等待线程

时间:2015-12-12 10:32:33

标签: java multithreading

我使用监视器和条件变量来同步线程,我有一个线程应该等到另一个线程发出信号,但是信号没有唤醒等待线程。 如果一个线程等待,"线程等待"出现,但当一个线程发信号到那个等待线程"线程发出信号"没有出现。 这是我的代码:

try {
    worker = new monitorun(request, mainWebs, charge, S, executor, second1, lock1, m1);
    Thread th = new Thread(worker);

    while (charge2 <= 0 && m1.get(str4[1]) < 1000) {
        try {
            System.err.println("thread wait");
            m3.get(str4[1]).await();
            System.err.println("thread signaled");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    lock1.lock();
    try {
        charge = m1.get(str4[1]) + charge2;

        th.start();
        m1.remove(str4[1]);
        m1.put(str4[1], charge);

        if (m1.get(str4[1]) >= 1000) {
            m3.get(str4[1]).signal();
            System.out.println("signal");

        }
    } finally {
        lock1.unlock();
    }

} finally {
    lock1.unlock();

    b = false;
}

0 个答案:

没有答案