27得票2回答
如何创建一个scala.concurrent.ExecutionContext

如何创建scala.concurrent.ExecutionContext ? 文档通常给出一个总体概述,提到了scala.concurrent.ExecutionContext.global的“默认”实现。 但是,有时您需要创建自己的 E.C.,而不使用akka和其他类似的工具。

23得票3回答
在Android中,将后台线程的结果传达给UI线程的正确方法

对我来说,这是最令人困惑的话题之一。所以我的问题是,当后台线程完成时,如何正确地通知结果? 想象一下,我想用刚刚下载的一些信息更新一些TextView。 当我需要执行后台任务时,我使用以下3个工具: AsyncTask 非常容易使用,它有一个onPostExecute()方法,可以直接将结果返...

23得票3回答
使用ThreadPoolExecutor处理异常

我有以下代码片段,基本上通过扫描需要执行的任务列表,将每个任务交给执行器执行。 JobExecutor 再创建另一个执行器(用于处理数据库操作...读写数据到队列)并完成任务。 JobExecutor 返回提交的任务的 Future<Boolean>。当其中一个任务失败时,我想...

23得票2回答
单一线程池比多个线程池更好的设计吗?

有多个线程池在Java中有什么优点和缺点?我看到过一些代码使用不同的线程池处理不同类型的任务,我不确定这是更好的设计还是开发人员懒惰。一个例子是为按时执行或带有超时的任务使用ScheduledThreadPoolExecutor,而为其他所有任务使用另一个ThreadPoolExecutor。

22得票5回答
如何立即强制终止ThreadPoolExecutor中的所有工作线程

我在一个TheadPoolExecutor中有许多任务。我在我的界面上有一个停止按钮,应该立即终止ThreadPoolExecutor中的所有线程。我正在寻找一种方法来做到这一点(不使用shutDown()或shutDownNow())。 谢谢

21得票3回答
线程池执行器使用无界队列时未创建新线程

我的ThreadPoolExecutor无法创建新线程。事实上,我编写了一个有点“hacky”的LinkedBlockingQueue,它将接受任何任务(即它是无界的),但会调用额外的处理程序 - 在我的应用程序中,它会输出警告追踪,表示池已滞后 - 这为我提供了非常明确的信息,即TPE拒绝创...

20得票3回答
线程池执行器 - 核心和最大池大小

1. 当一个新任务被提交到 execute(java.lang.Runnable) 方法中,如果运行的线程数不足corePoolSize,则会创建一个新的线程来处理该请求,即使其他工作线程处于空闲状态。 2. 如果正在运行的线程数大于corePoolSize但小于maximumPoolSize...

18得票5回答
Java并发模式:外部共享资源(智能卡)

我有一个Web服务器服务,客户端请求智能卡计算并获得结果。在服务器运行期间,可用的智能卡数量可能会减少或增加,例如我可以从读卡器中物理添加或删除智能卡(或许多其他事件...如异常等)。 智能卡计算可能需要一段时间,因此我必须优化这些工作以利用所有可用的智能卡,如果Web服务器有并发请求。...

17得票3回答
在Android中,new Thread(task).start()和ThreadPoolExecutor.submit(task)有何区别?

在我的Android项目中,我有很多需要异步运行一些代码的地方(例如web请求,调用数据库等)。这不是长时间运行的任务(最多几秒钟)。 到目前为止,我一直通过创建一个新线程,传递一个包含任务的新可运行对象来处理这种情况。但最近我读了一篇关于Java中线程和并发的文章,并明白为每个单独的任务创建...

16得票2回答
预初始化一个工作线程池以重用连接对象(套接字)

我需要在Java中建立一个工作线程池,其中每个工作线程都有自己的连接套接字;当工作线程运行时,它使用套接字但保持其打开状态以便稍后重用。我们决定采用这种方法是因为在即席创建、连接和销毁套接字时所需的开销过大,因此我们需要一种方法来预先初始化具有套接字连接的工作线程池,以便随时准备接受工作并将套...