我刚刚开始使用Java中的Threads,所以这可能是一个基本问题,但我无法在线找到答案。
我有两个线程可以调用一个同步函数。我理解它的方式,如果第二个线程在第一个线程已经调用它时调用它,第二个线程将等到第一个线程完成后再调用它。但是,我不希望第二个线程完全调用它。
答案 0 :(得分:6)
然后最简单的方法是使用显式锁(ReentrantLock
)并调用其tryLock()
方法。
如果返回true,则表示没有其他线程拥有该锁,并且当前线程获取了该锁。
如果返回false,则表示另一个线程持有锁,您不应该调用该方法。
请记住始终在finally块中调用unlock()
,以确保即使出现异常也会释放锁定。