明确地从线程获取锁定

时间:2017-05-01 12:23:52

标签: java multithreading concurrency locking

我有一个正在运行的线程。我想从中获得一把锁。我想明确地做,不是在方法签名或类似的东西。我该怎么做?我的意思是有时我的线程需要同时获得多个锁,并使用synchronized(lock)或方法签名获取锁定不合适。我想必须有像CurrentThread.acquireTheLock(lock);这样的东西。我可以写

CurrentThread.acquireTheLock(lock1);
CurrentThread.acquireTheLock(lock2);

1 个答案:

答案 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();
    }    
}