问题描述
将捕捉可重入锁的try catch放while循环外为什么线程不退出?如果是放在while循环里面线程是可以正常结束的。是跟lock的解锁位置有关么?不知道是啥原理。。
相关代码
粘贴代码文本(请勿用截图)
public class LockTest {
public static void main(String[] args) {
LockThread lockThread = new LockThread();
new Thread(lockThread).start();
new Thread(lockThread).start();
new Thread(lockThread).start();
}
}
class LockThread implements Runnable {
private final ReentrantLock lock = new ReentrantLock();
int tickets = 10;
@Override
public void run() {
try {
while (true) {
lock.lock();
if (tickets > 0) {
System.out.println(tickets--);
} else {
break;
}
}
} finally {
lock.unlock();
}
}
}
结果:
入锁多少次,就要出锁多少次