114得票9回答
在Java中,ExecutorService.submit和ExecutorService.execute在这段代码中有什么区别?

我正在学习使用ExectorService来池化threads并发送任务。我有一个简单的程序如下:import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.ut...

112得票6回答
调用ExecutorService的shutdown()方法的原因

我在过去几个小时里阅读了很多关于这个问题的内容,但我仍然无法找到任何一个(有效的)理由来调用shutdown()方法关闭ExecutorService,除非我们有一个存储着许多不常使用的执行器服务的庞大应用程序。 从我所了解的情况来看,shutdown()方法只会做与普通线程完成后一样的事情。...

110得票3回答
FixedThreadPool与CachedThreadPool:两害相权取其轻

我有一个程序,会生成一些线程(大约5-150个),来执行一系列任务。最初,我使用了FixedThreadPool,因为这个类似的问题建议它们更适合处理较长时间的任务,并且在我对多线程编程的知识非常有限时,我认为线程的平均寿命(几分钟)是“长时间的”。 然而,最近我添加了生成额外线程的功能,这...

96得票9回答
将ExecutorService在Java中转换为守护进程

我正在Java 1.6中使用ExecutoreService,简单地通过以下方式启动:ExecutorService pool = Executors.newFixedThreadPool(THREADS). 当我的主线程完成时(连同线程池处理的所有任务),这个线程池将防止我的程序关闭,直到...

94得票8回答
Java:在特定队列大小后阻止提交的ExecutorService

我正在尝试编写一个解决方案,其中单个线程会生成I/O密集型任务,可以并行执行。每个任务都具有重要的内存数据。因此,我希望能够限制在某一时刻挂起的任务数量。 如果我像这样创建ThreadPoolExecutor: ThreadPoolExecutor executor = new Thr...

89得票5回答
Future.get() 方法调用会阻塞,这真的是可取的吗?

以下是伪代码片段。 下面的代码是否不符合并行异步处理的概念? 我之所以这样问,是因为在下面的代码中,主线程会提交一个任务以在不同的线程中执行。在将任务提交到队列后,它会阻塞在Future.get()方法上等待任务返回值。我宁愿在主线程中执行任务,而不是提交到另一个线程并等待结果。通过在新线程...

88得票6回答
Java的Fork/Join与ExecutorService - 什么时候使用哪一个?

我刚刚阅读了这篇文章:Java-5 ThreadPoolExecutor 和 Java-7 ForkJoinPool 有什么优势? ,并且觉得答案不够明确。 您可以用简单的语言和例子解释一下,Java 7 的 Fork-Join 框架和旧方案之间的权衡是什么吗? 我还阅读了此主题的谷歌搜索...

85得票6回答
ExecutorService(特别是ThreadPoolExecutor)是否线程安全?

ExecutorService是否保证线程安全? 我将从不同的线程向同一个ThreadPoolExecutor提交任务,那么在交互/提交任务之前,我是否需要对执行器进行同步访问?

77得票10回答
关闭和等待终止的首次调用有什么区别?

什么是区别?ExecutorService eService = Executors.newFixedThreadPool(2); eService.execute(new TestThread6()); eService.execute(new TestThread6()); eServic...

76得票10回答
当ThreadPoolExecutor的队列已满时会阻塞吗?

我正在尝试使用ThreadPoolExecutor执行大量任务。以下是一个假设的示例:def workQueue = new ArrayBlockingQueue<Runnable>(3, false) def threadPoolExecutor = new ThreadPool...