gpt4 book ai didi

java - 当我尝试倒计时时同步被阻塞

转载 作者:行者123 更新时间:2023-11-30 04:45:44 24 4
gpt4 key购买 nike

我关注了the advice I found in this post使用 CountDownLatch 我遇到了问题。我编写了这个测试并运行它,当我尝试同步锁定时,我的线程创建了 block 。

  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);
}
}
}

为什么这不起作用?

最佳答案

CountDownLatch 不是需要同步的对象(即删除 synchronized(lock) block )。所有线程安全都在对象本身内部处理。

关于java - 当我尝试倒计时时同步被阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11007551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com