Dan*_*cco 14 java multithreading deadlock
我正在调试运行多个线程的Java应用程序.经过一段时间观察日志后,似乎其中一个线程不再运行了.我的猜测是线程正在等待一个永不释放的锁(最后一个输出是在调用synchronized方法之前).
我可以为线程配置超时; 一种"等待这种锁定,但如果在10秒后不可用,就不要再等了!"
Ben*_*ngs 27
您可以使用java.util.concurrent.Lock而不是内部Object锁.没有公平排序的RentrantLock具有与内在锁相同的基本行为和语义.有一个方法tryLock采用超时参数:
Lock lock = ...;
if (lock.tryLock(10L, TimeUnit.SECONDS)) {
try {
// manipulate protected state
} finally {
lock.unlock();
}
} else {
// perform alternative actions
}
Run Code Online (Sandbox Code Playgroud)