繁体   English   中英

明确从线程获取锁

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM