另一种是每1秒启动一个线程
我的线程池大小为3,如下所示,在构造函数中,我使用相同的线程池来启动两个不同的线程:
一个是调用Poller
类,实现Runnable
接口
下面是我的代码:
private final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(3);
private Data() {
executorService.submit(new Poller());
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
for (Entry<Long, byte[]> entry : retryHolder.asMap().entrySet()) {
execute(entry.getKey(), entry.getValue());
}
}
}, 0, 1, TimeUnit.SECONDS);
}
我的问题是,我需要大小为3的线程池,还是我可以在这里使用2?因为我知道根据我上面的代码,它只会使用两个线程,所以很明显我可能在浪费另一个线程?
根据scheduleAtFixedRate
:
的文档,如果此任务的任何执行时间超过其周期,则后续执行可能会延迟开始,但不会同时执行因此,在池中只使用2个线程是可以的,但在池中使用3个线程可能只会带来最小的(如果有的话)性能/开销缺点。