Bie*_*aja 5 java multithreading
我目前有一个班级列表,每个班级都会启动一个调度程序,如下所示:
private ScheduledFuture<?> myTask;
private ScheduledExecutorService scheduler;
public startScheduler() {
scheduler = Executors.newScheduledThreadPool( 1 );
myTask = scheduler.scheduleAtFixedRate(new Runnable() {
// doing work here
},
delay,
interval,
TimeUnit.MILLISECONDS );
}
Run Code Online (Sandbox Code Playgroud)
因此,每个类基本上都启动它自己的调度程序,并且只有一个任务。但是据我了解,调度程序可以并行执行并运行更多任务。这些任务(或在我当前的程序中,调度程序)具有不同的延迟和间隔值,并且启动的调度程序的数量对于我来说是未知的(因为用户可以启动新的调度程序并停止运行它们)。所有调度程序并行运行。那么我应该更改我的代码以仅使用一个调度程序吗?我应该选择“ CachedThreadPool”吗?
是的,您可以仅使用一个池来安排所有任务。另外,如果您需要像当前一样按时间间隔安排任务的能力,您应该坚持使用,newScheduledThreadPool因为newCachedThreadPool仅返回一个ExecutorService接口而不是ScheduledExecutorService.
| 归档时间: |
|
| 查看次数: |
9153 次 |
| 最近记录: |