newCachedThreadPool() 与 newFixedThreadPool()
我什么时候应该使用其中一种?哪种策略在资源利用方面更好?
java concurrency multithreading executorservice threadpoolexecutor
我只是想知道如何增加tomcat线程池中的线程数?以及设置最大值的数字,我不知道什么是合适的?
我想在整个应用程序中使用相同的线程池.为此,我可以让ExecutorService静态和全局,这样我可以调用ThreadUtil.executorService得到ExecutorService,当我需要它.
public class ThreadUtil {
public static final ExecutorService executorService = Executors.newCachedThreadPool();
}
Run Code Online (Sandbox Code Playgroud)
可以像这样实例化多个线程池吗?
另外,我的应用程序是TCP服务器.如果我不知道游泳池应该有多大,可以简单地使用newCachedThreadPool吗?
我在我的应用程序上运行了负载测试,以找到支持计划负载所需的最大线程数.
我已经使用过,ExecutorService CachedThreadPool所以线程是根据负载动态创建的.现在我知道使用最大线程数的值getLargestPoolSize().
我应更换CachedThreadPool同FixedThreadPool(maxValue),以避免大量(Integer.MAX_VALUE)的线程创建的行为CachedThreadPool?
建议每个人的利弊.
说我有这个:
class Queue {
private static ExecutorService executor = Executors.newFixedThreadPool(1);
public void use(Runnable r){
Queue.executor.execute(r);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 如何定义池中使用的线程,特别是想要覆盖池中线程的中断方法:
@Override
public void interrupt() {
synchronized(x){
isInterrupted = true;
super.interrupt();
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个长时间运行的过程,它监听事件并进行一些密集的处理.
目前我Executors.newFixedThreadPool(x)用来限制同时运行的作业数量,但是根据一天中的时间和其他各种因素,我希望能够动态增加或减少并发线程的数量.
如果我减少并发线程的数量,我希望当前正在运行的作业能够很好地完成.
是否有一个Java库可以让我控制并动态增加或减少线程池中运行的并发线程数?(该类必须实现ExecutorService).
我必须自己实施吗?
java multithreading executorservice threadpool threadpoolexecutor