java并发编程的艺术书上的一个问题求解啊。。。
书上的TwinsLockTest那个代码片段里,取消设置Daemon线程之后,test方法结束后,里面开的worker线程为何不会死循环获取锁,然后打印呢?而是当最下面的for循环结束之后就不再打印了。
public class TwinsLockTest {
@Test
public void test() {
final Lock lock = new TwinsLock();
class Worker extends Thread {
public void run() {
// 这里为什么test方法结束之后,不会一直死循环获取锁?
while (true) {
lock.lock();
try {
SleepUtils.second(1);
System.out.println(Thread.currentThread().getName());
SleepUtils.second(1);
} finally {
lock.unlock();
}
}
}
}
for (int i = 0; i < 10; ++i) {
Worker w = new Worker();
// w.setDaemon(true); 这里取消设置Daemon线程
w.start();
}
for (int i = 0; i < 10; ++i) {
SleepUtils.second(1);
System.out.println();
}
}
}
#笔记##读书笔记##Java#
查看30道真题和解析