在代码中:
val executor = new ForkJoinPool()
executor.execute(new Runnable{
def run = println("This task is run asynchronously")
})
Thread.sleep(10000)
此代码打印:此任务异步运行
但是如果我删除 Thread.sleep(10000),程序不会打印。然后我了解到这是因为 sleep 会阻止 ForkJoinPool 中的守护线程在调用 Runnable 对象上的 run 方法之前被终止。
所以,几个问题:
- 这是否意味着由 ForkJoinPool 启动的线程都是守护线程?为什么会这样?
- 睡眠在这里有什么帮助?