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#
 基恩士成长空间 419人发布
基恩士成长空间 419人发布