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#