Java 当我尝试倒计时时,同步正在阻塞
我使用了倒计时锁,但遇到了一个问题。我编写了这个测试并运行它,当我尝试在锁上同步时,我的线程创建了块Java 当我尝试倒计时时,同步正在阻塞,java,multithreading,concurrency,countdownlatch,Java,Multithreading,Concurrency,Countdownlatch,我使用了倒计时锁,但遇到了一个问题。我编写了这个测试并运行它,当我尝试在锁上同步时,我的线程创建了块 private CountDownLatch lock = new CountDownLatch(1); @Test public void testBlock() { Runnable r = new Runnable() { @Override public void run() { try {
private CountDownLatch lock = new CountDownLatch(1);
@Test
public void testBlock() {
Runnable r = new Runnable() {
@Override
public void run() {
try
{
synchronized(this) {
this.wait(50);
}
}
catch (InterruptedException e)
{
e.printStackTrace();
throw (new RuntimeException(e));
}
releaseLock();
}
};
Thread t = new Thread(r);
t.setDaemon(true);
t.start();
waitOnCallback();
}
private void releaseLock() {
synchronized(lock) { // Thread t blocks here
lock.countDown();
}
}
private void waitOnCallback() {
synchronized(lock) {
try
{
lock.await();
}
catch (InterruptedException e)
{
throw new RuntimeException(e);
}
}
}
为什么不工作?倒计时锁存器不是需要同步的对象(即删除
已同步(锁定)
块)。所有线程安全都在对象本身内部处理。@Ring-yep。不幸的是,你发现的例子并不好。