如何独立于主线程运行执行程序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()");

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...