[英]Explicitly acquire a lock from a thread
我有一个正在运行的线程。 我想从中获得一把锁。 我想明确地做到这一点,而不是在方法签名或类似方法中。 我该怎么做? 我的意思是有时我的线程需要一次获取一个以上的锁,而使用synchronized(lock)
或方法签名来获取锁是不合适的。 我想一定有类似CurrentThread.acquireTheLock(lock);
东西CurrentThread.acquireTheLock(lock);
。 我将能够写
CurrentThread.acquireTheLock(lock1);
CurrentThread.acquireTheLock(lock2);
您可以使用ReentrantLock。
ReentrantLock lock1 = new ReentrantLock();
ReentrantLock lock2 = new ReentrantLock();
public void DoSomething()
{
lock1.lock();
lock2.lock();
try {
//critical section
} finally {
lock1.unlock();
lock2.unlock();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.