executorservice相关内容
我创建了一个线程,该线程又创建了一个ThreadPoolExecutor并向其提交一些长时间运行的任务.在某些时候,原始线程由于未处理的异常/错误而死亡.执行程序应该怎么办(它是该死线程的本地对象,没有外部引用该死线程)?是否应该GC? 编辑:这个问题从一开始就被错误地提出,但是我会把它保留下来,因为格雷提供了有关TPE工作原理的一些很好的细节. 解决方案 线程被称为 GC根.这意味
..
我正在尝试通过执行程序并运行可并行执行100个任务,该任务需要使用循环变量: for (int i = 0; i { doSomething(String.format("Need task number %d done", i)); } }); } 我在'i'的语气中迷惑不解-Varia
..
我在使用我编写的通过Scala 2.10 Futures + Promises框架生成线程的各种新应用程序后立即退出JVM遇到了麻烦. 似乎,至少在默认执行上下文中,即使我正在使用阻塞,例如 future { blocking { /* work */ }} 没有启动非守护程序线程,因此JVM认为它可以立即退出. 一个愚蠢的解决方法是启动一个虚拟的Thread实例,该实例只是
..
我使用的是Java Mail API。我能够将电子邮件发送给各个收货人, transport.connect() ; 用于循环{ 成员= list.get(i) message.setRecipients(MimeMessage.RecipientType.TO,memebr +“ @ abc.com”); transport.sendMessage(message,message
..
我正在寻找 ExecutorService 的实现,它将提供以下语义。每个线程都由一个“工人”占用,该工人根据输入执行某些任务。保证每个工作程序只能在单个线程中执行,因此,应该允许它维护任务与任务之间的状态,而没有同步开销,因为它将在单个线程中与自己同步。 因此,假设我有100个输入和10个工人,我希望能够编写如下内容: for(输入输入:输入){ //下面的代码会将t传递给所有1
..
我正在严格使用: CompletableFuture .delayedExecutor(1,TimeUnit.MILLISECONDS).execute (()-> {}); 从我在网上阅读的内容来看,通常每次通话都使用一个新线程。我想知道是否有一种方法可以重用线程而不是创建新线程? 更新: 我不清楚-我想使用 CompletableFutur
..
我想知道使用BlockingQueue代替(PipedOutputStream和PipedInputStream)的优点 import java.io.*; import java.util.concurrent.*; public class PipedStreamVsBlocking { public static void main(String... args) {
..
在我们的一项服务中,有人添加了(简化)这样的一段代码: public class DeleteMe { public static void main(String[] args) { DeleteMe d = new DeleteMe(); for (int i = 0; i
..
我们有一个Spring应用程序,我想添加一个服务,该服务将处理具有多个线程的10K ID,但将作为后台进程,而不会实时影响生产. 服务将更新数据库并发送外部提供商请求. 我不希望服务影响/影响生产性能/时间安排,我想以较低的优先级对每个ID执行操作 我阅读了以前的帖子关于在Executer中设置优先级,但我希望可以降低此特定Executer范围之外的所有其他线程的优先级.
..
我有一个ExecutorService,用于调用Callable对象的集合,并返回与该集合中Callable元素相对应的Future对象的列表. 但是,在遍历列表的某个地方,它将引发以下异常: java.util.concurrent.ExecutionException: java.lang.IndexOutOfBoundsException: Index: 7, Size: 1 a
..
我正在尝试使用ExecutorService及其功能invokeAll用Java编写程序.我的问题是:invokeAll函数是否可以同时解决任务?我的意思是,如果我有两个处理器,那么会同时有两个工人吗?因为aI无法使其正确缩放.如果我给出newFixedThreadPool(2)或1,则需要花费相同的时间来解决问题. List> list =
..
我正在处理具有不同运行时间的任务的多线程应用程序.当一个线程结束时,是否有办法从仍在运行的线程中接管一些任务? 这里是一个例子.我从5个线程开始我的程序,每个线程有50个任务.当运行速度最快的线程完成时,另一个线程仍然有40个任务要完成.我如何才能从另一个线程中获取完成的线程来执行20个任务,因此每个线程继续执行20个任务,而不是等待正在运行的线程完成剩余的40个任务? 解决方案 使
..
我正在使用Java DynamoDB SDK在本地Dynamo DB中进行批量写入(大约5.5k项)的POC。我知道每个批量写入操作不能超过25个写入操作,因此我将整个数据集分为25个项目。然后,我将这些块作为可执行程序传递给Executor框架。不过,由于在100多秒内插入了5.5k记录,我的结果仍不令人满意。 我不确定我还能如何优化它。在创建表格时,我将WriteCapacityUnit
..
我正在这里查看文档: http://doc.akka。 io / docs / akka / 2.3.3 / java / dispatchers.html 我们使用Akka的方式是,我们有两个单独的调度程序(不同参与者的默认fork-join执行者)。现在,我们遇到了一些性能问题,我们正在研究如何调整调度程序配置参数,并查看它们如何影响应用程序的性能。 I已经查看了文档,但并不太了解
..
我正在尝试在Akka中为调度程序使用自定义执行程序。 特别是,我想用我自己的包装现有执行程序(记录,调试等)。 。 我看过文档: 可以配置默认调度程序,默认情况下是具有“ fork-join-executor”的分派器,在大多数情况下,该分派器均具有出色的性能。 和 使用“执行器”指定,使用“ fork-join-executor”,“ thread-pool-exe
..
我正在尝试使用Java执行服务,并编写了以下代码来运行Fibonacci(是的,是大型递归版本,只是为了强调执行服务). 令人惊讶的是,如果将nThreads设置为1,它将运行得更快.这可能与以下事实有关:提交给执行程序服务的每个“任务"的大小确实很小.但是如果我将nThreads设置为1,它仍然必须是相同的数字. 要查看对共享Atomic变量的访问是否可能导致此问题,我用注释"see
..
我有一个对象,需要通过4个场景来运行.我想在2个线程之间拆分(这样我就可以发送到其他服务器) 我已经在2台服务器上使用了此功能,但是在尝试清理代码时,我创建了如下所示的内容: ExecutorService executor1 = Executors.newFixedThreadPool(1); ExecutorService executor2 = Executors.newFixed
..
我在多线程中遇到了一些非常奇怪的行为.我有两个类:DipoleTester和Dipole. DipoleTester尝试创建多个Dipole对象,然后异步运行它们.问题在于DipoleTester只是一次运行所有其Dipole对象,而不是一次运行2个. 这里是DipoleTester: public class DipoleTester { public static S
..
大家好,我想创建一个作业队列来执行多个任务.但是,我的要求是我应该能够随时将任务添加到该作业队列中,并且所有这些任务应按顺序执行.我在互联网上搜索了一些解决方案,并找到了这两个链接1) Java Executor框架教程和最佳做法.但是我不能同时使用这两种解决方案.因为启动Executor服务后,我无法向该服务添加新任务.因为我们知道它可能会抛出InterruptedException或Concu
..
我使用ExecutorService在超时后中断任务,为此我使用ScheduledExecutorService.首先,我提交了该线程,并且该线程一次立即开始,并保留了创建的将来.之后,我将ScheduledExecutorService用作一项新任务,它将在一段时间后取消保留的将来. //Start Spring executor to submit tasks ThreadPoolTa
..