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