问题描述
我需要独立于主线程执行一段代码,我已经通过
实现了new Thread(()->{
someBigWork()
}).start();
这很好,但是我想通过Executors newSingleThreadExecutor
我尝试了以下代码
public static void main()
{
try{
// some my code should run in main Thread
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.execute(() -> someBigWork());
// some my code should run in main Thread
}catch(Expection e){
// some handeling code
}finally{
executorService.shutdown();
}
我看到的是仅在someBigWork()执行完成后才退出主线程。
我正在通过cmd行运行此代码,我在pring日志后添加了一些日志,程序退出了(我认为,是否主线程正在等待someBigWork()完成)
我想独立运行someBigWork()。
我想念什么吗?
如果我错了,请纠正我
解决方法
代码中的主线程在someBigWork()之后偶然退出。如果将Thread.sleep(delayInMilliseconds)添加到someBigWork()中,并在main()和someBigWork()的末尾使用线程名称进行记录
System.out.println(Thread.currentThread().getName() + ": end of myMethodName()");
然后您将看到它们独立运行。