我有后台Runnable
作业正在单独的线程中运行:
Runnable job = () -> {
// do something
};
Thread thr = new Thread(job);
thr.start();
此作业运行的是jar
中的一些外部代码,该代码不应按要求生成新线程。
是否可以强制执行此口头规则并禁止从thr
线程启动新的子线程?如果在这种情况下Thread.start()
会抛出一些异常,那就太好了。
如果您安排线程和子线程并且没有第三方库来运行子线程,那么您可以通过ExecutorService.newSingleThreadExecutor()
来安排所有可运行对象>
Executor executor = ExecutorService.newSingleThreadExecutor() executor.execute(()-> { });
创建一个执行程序,该执行程序使用单个工作线程在无限制的队列上操作。 (但是请注意,如果该单线程由于在关闭之前的执行期间失败而终止,则在需要执行新任务时将使用新线程代替。)保证任务按顺序执行,并且活动的任务不超过一个在任何给定时间。与其他等效的newFixedThreadPool(1)不同,保证返回的执行程序不可重新配置为使用其他线程。