31得票10回答
清除ThreadPoolExecutor中所有排队的任务

我有一个关于 ThreadPoolExecutor 的简单问题。我的情况是:我需要从队列中消耗对象,为它们创建适当的工作任务并将它们提交到 ThreadPoolExecutor 中。这很简单。但在关闭场景中,可能会有许多工作任务排队等待执行。由于其中一个任务可能运行一小时,而我希望相对快速地正...

30得票10回答
如何对运行在执行器服务中的代码片段进行单元测试,而不是等待Thread.sleep(time)?

如何对在执行器服务中运行的代码进行单元测试?在我的情况下,public void test() { Runnable R = new Runnable() { @Override public void run() { execu...

30得票8回答
如何使外部方法可中断?

问题 我正在通过一个ExecutorService运行多个对外部方法的调用。我想能够中断这些方法,但不幸的是它们本身并未检查中断标志。是否有办法强制从这些方法引发异常? 我知道从任意位置抛出异常可能是危险的,但在我的特定情况下,我愿意冒这个险,并准备好应对后果。 细节 所谓的“外部方法...

29得票2回答
ExecutorService与普通线程生成器的区别

我有一个关于Java中ExecutorService的基本问题。 很难看出简单地创建Threads以并行执行某些任务和将每个任务分配给ThreadPool之间的区别。 ExecutorService看起来也很简单高效,所以我想知道为什么我们不总是使用它。 这只是一种方式比另一种方式更快地...

28得票5回答
在Java中如何暂停/恢复ExecutorService中的所有线程?

我在Java中提交了许多作业到执行器服务(ExecutorService),我希望能够临时暂停这些作业。最好的方法是什么?我该如何恢复?或者我完全错了吗?对于我想要实现的暂停/恢复执行服务的能力,应该遵循其他模式吗?

28得票3回答
Java支持三种不同的并发模型。

我正在研究多线程环境下的不同并发模型(http://tutorials.jenkov.com/java-concurrency/concurrency-models.html)。 这篇文章重点介绍了三种并发模型: 并行工作者 第一个并发模型是我所谓的并行工作者模型。传入的作业被分配给...

28得票4回答
我能否在不使用ExecutorService的情况下使用Callable线程?

我可以在不使用ExecutorService的情况下使用Callable线程吗?我们可以在没有ExecutorService的情况下使用Runnable实例和Thread子类,而且这段代码可以正常工作。但是这段代码可以保持一致性:public class Application2 { ...

27得票1回答
从Callable.call()中抛出的异常应该在哪里捕获?

可能是重复问题: 如何处理Java ExecutorService任务的异常 我使用Java的ExecutorService协调线程。 为了启动线程,我使用以下代码:pool = new ExecutorService(2); callableResults = pool.i...

27得票3回答
使用invokeAll还是submit - Java Executor服务

我有一个场景,需要同时异步执行5个相同的可调用对象。据我所知,有两种选择: 1)使用submit(Callable)ExecutorService executorService = Executors.newFixedThreadPool(5); List<Future<Str...

27得票5回答
可变延迟的ScheduledExecutorService

假设我有一个任务,需要从java.util.concurrent.BlockingQueue中获取元素并对其进行处理。public void scheduleTask(int delay, TimeUnit timeUnit) { scheduledExecutorService.sc...