如何独立于主线程运行执行程序newSingleThreadExecutor

问题描述

我需要独立于主线程执行一段代码,我已经通过

实现了
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()");

然后您将看到它们独立运行。