禁止线程产生新的子线程

问题描述 投票:0回答:1

我有后台Runnable作业正在单独的线程中运行:

Runnable job = () -> {
  // do something
};
Thread thr = new Thread(job);
thr.start();

此作业运行的是jar中的一些外部代码,该代码不应按要求生成新线程。

是否可以强制执行此口头规则并禁止从thr线程启动新的子线程?如果在这种情况下Thread.start()会抛出一些异常,那就太好了。

java multithreading
1个回答
0
投票

如果您安排线程和子线程并且没有第三方库来运行子线程,那么您可以通过ExecutorService.newSingleThreadExecutor()来安排所有可运行对象>

Executor executor = ExecutorService.newSingleThreadExecutor()
executor.execute(()-> {

});

创建一个执行程序,该执行程序使用单个工作线程在无限制的队列上操作。 (但是请注意,如果该单线程由于在关闭之前的执行期间失败而终止,则在需要执行新任务时将使用新线程代替。)保证任务按顺序执行,并且活动的任务不超过一个在任何给定时间。与其他等效的newFixedThreadPool(1)不同,保证返回的执行程序不可重新配置为使用其他线程。

© www.soinside.com 2019 - 2024. All rights reserved.