在代码中:
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方法之前被终止。
所以,几乎没有问题:
答案 0 :(得分:2)
数目:
是的,因为您正在使用默认的线程工厂,这就是它的配置方式。如果您愿意,可以为其提供自定义线程工厂,并且可以将线程配置为非守护进程。
睡眠有帮助,因为它可以防止程序退出足够长的时间,让线程池线程找到你的任务并执行它。