Java 等待直到在另一个线程中获取锁
我试图在获得锁的同时解决并发问题,代码如下所示: 真正的锁是在线程启动时获得的,这已经太晚了Java 等待直到在另一个线程中获取锁,java,multithreading,concurrency,Java,Multithreading,Concurrency,我试图在获得锁的同时解决并发问题,代码如下所示: 真正的锁是在线程启动时获得的,这已经太晚了 acquireLockAndRunOnNewThread(() -> { acquiredLock=true; continueWithOtherStuff(); } //do not continue until the lock is acquired while(acquiredLock==false){ Thread.sleep(100); } continue
acquireLockAndRunOnNewThread(() -> {
acquiredLock=true;
continueWithOtherStuff();
}
//do not continue until the lock is acquired
while(acquiredLock==false){
Thread.sleep(100);
}
continueWithOtherStuffThatAlsoAcquiresALockAtSomePointInTime()
如何在没有线程的情况下正确解决此问题。睡眠?使用:
然后:
使用:
然后:
CountDownLatch latch = new CountDownLatch(1);
acquireLockAndRunOnNewThread(() -> {
latch.countDown();
continueWithOtherStuff();
}
//do not continue until the latch has counted down to zero.
latch.await();
continueWithOtherStuffThatAlsoAcquiresALockAtSomePointInTime()