小编ich*_*ift的帖子

ExecutorService,按顺序执行任务但从池中获取线程

我正在尝试使用以下属性构建一个实现ExecutorService,让我们调用它SequentialPooledExecutor.

  1. SequentialPooledExecutor共享相同线程池的所有实例

  2. 对相同实例的调用SequentialPooledExecutor按顺序执行.

换句话说,实例在开始处理其队列中的下一个任务之前等待当前正在执行的任务的终止.

我目前正在实施SequentialPooledExecutor自己,但我想知道我是否正在重新发明轮子.我研究了不同的实现ExecutorService,例如那些由Executors类提供的实现,但我找不到符合我要求的实现.

你知道我现有的实现是否缺失,还是我应该继续自己实现界面?

编辑:

我认为我的要求不是很清楚,让我们看看我是否可以用其他的话来解释它.

假设我有一系列会话,比如1000个(我以前称之为执行程序实例的东西).我可以向会话提交任务,我希望保证提交给同一会话的所有任务都按顺序执行.但是,属于不同会话的任务应该彼此没有依赖关系.

我想定义一个ExecutorService执行这些任务但是使用有限数量的线程,比方说200,但确保在同一个会话中的前一个任务完成之前没有启动任务.

我不知道是否存在已经存在的任何事情,或者我是否应该实施这样的ExecutorService事情.

java multithreading executorservice threadpool threadpoolexecutor

10
推荐指数
2
解决办法
3911
查看次数

Java newSingleThreadExecutor垃圾回收

请考虑以下Java代码

void doSomething(Runnable r1, Runnable r2){
  Executor executor = Executors.newSingleThreadExecutor();
  executor.execute(r1);
  executor.execute(r2);
}
Run Code Online (Sandbox Code Playgroud)

当我调用doSomething方法时,创建执行程序并依次顺序执行任务r1和r2.

我的问题是:一旦两个任务r1和r2终止会发生什么?

我想执行器对象将被垃圾收集,但我不知道它是否也会被关闭.如果执行程序为其执行创建了一个新线程,该线程是否会导致资源泄漏?

java multithreading executor

5
推荐指数
1
解决办法
462
查看次数