我有一个正在运行的线程。我想从中获得一把锁。我想明确地做,不是在方法签名或类似的东西。我该怎么做?我的意思是有时我的线程需要同时获得多个锁,并使用synchronized(lock)
或方法签名获取锁定不合适。我想必须有像CurrentThread.acquireTheLock(lock);
这样的东西。我可以写
CurrentThread.acquireTheLock(lock1);
CurrentThread.acquireTheLock(lock2);
答案 0 :(得分:0)
您可以使用ReentrantLock。
ReentrantLock lock1 = new ReentrantLock();
ReentrantLock lock2 = new ReentrantLock();
public void DoSomething()
{
lock1.lock();
lock2.lock();
try {
//critical section
} finally {
lock1.unlock();
lock2.unlock();
}
}