问题标签 [executorservice]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 500 Worker Threads,什么样的线程池?
我想知道这是否是最好的方法。我有大约 500 个无限期运行的线程,但是 Thread.sleep 在完成一个处理周期后会持续一分钟。
正在执行的代码非常简单,基本上就是这样
对于每个正在运行的任务,我确实需要一个单独的线程,因此更改架构不是一种选择。我尝试使我的 threadPool 大小等于 Runtime.getRuntime().availableProcessors() ,它试图运行所有 500 个线程,但只让它们中的 8 个(4xhyperthreading)执行。其他线程不会投降,让其他线程轮到他们。我尝试输入一个wait()和notify(),但仍然没有运气。如果有人有一个简单的例子或一些提示,我将不胜感激!
好吧,这个设计可以说是有缺陷的。线程实现遗传编程或 GP,一种学习算法。每个线程分析高级趋势做出预测。如果线程完成,则学习将丢失。也就是说,我希望 sleep() 可以让我在一个线程不“学习”的情况下共享一些资源
所以实际的要求是
如何安排保持状态并每 2 分钟运行一次的任务,但控制一次执行的数量。
java - thread.start() 和 executor.submit(thread) 的区别
我面临一个关于线程的问题。我有一个实现可运行的类,我可以在该类上使用 thread.start() 方法。我的问题是我还有一门课java.util.concurrent.ExecutorService
,我可以在其中调用 executor.submit(thread)..
谁能告诉我thread.start()
和executor.submit(thread)
...有什么区别
java - 当 executorservice 关闭()时,运行/阻塞的可运行对象会发生什么
今天发了一个关于线程模式的问题,几乎所有人都建议我看一下ExecutorService。
当我查看 ExecutorService 时,我想我遗漏了一些东西。如果服务有一个正在运行或阻塞的线程,并且有人调用了 ExecutorService.shutdown(),会发生什么。正在运行或阻塞的线程会发生什么?
ExecutorService 是否在终止之前等待这些线程完成?
我问这个的原因是因为很久以前当我涉足 Java 时,他们弃用了 Thread.stop(),我记得停止线程的正确方法是使用信号量并在必要时扩展 Thread:
ExecutorService 如何处理正在运行的线程?
java - 停止不被中断的线程
我有一个线程可以从 ObjectInputStream 中读取对象:
readObject 不会抛出 InterruptedException 并且据我所知,当该线程被中断时不会抛出异常。我如何停止这个线程?
java - 使用 ScheduledExecutorService 启动和停止计时器
根据我的阅读,ScheduledExecutorService 似乎是在 Java 中启动和停止计时器的正确方法。
我需要移植一些启动和停止计时器的代码。这不是一个周期性定时器。此代码在启动计时器之前停止计时器。所以,实际上每次启动实际上都是一个restart()。我正在寻找使用 ScheduledExecutorService 的正确方法。这是我想出的。寻找我所缺少的东西的评论和见解:
tia, 卢布
java - 如何为可调用线程命名?
我正在使用 ExecutorService 线程池执行一个可调用对象。我想给这个线程起个名字。
更具体地说,在旧版本中我这样做了 -
我在 log4j 日志记录中使用线程名称,这对故障排除有很大帮助。现在我正在将我的代码从 Java 1.4 迁移到 Java 1.6。我已经写了这个(如下所示) - 但我不知道如何给这个线程命名。
请给我一些想法来给这个线程命名?
java - ExecutorService,如何等待所有任务完成
等待所有任务ExecutorService
完成的最简单方法是什么?我的任务主要是计算,所以我只想运行大量的作业——每个核心上一个。现在我的设置如下所示:
ComputeDTask
实现可运行。这似乎可以正确执行任务,但代码wait()
在IllegalMonitorStateException
. 这很奇怪,因为我玩了一些玩具示例,它似乎可以工作。
uniquePhrases
包含数以万计的元素。我应该使用其他方法吗?我正在寻找尽可能简单的东西
java - 如何从线程池中获取线程 ID?
我有一个固定的线程池,我将任务提交到(限制为5 个线程)。如何找出这5 个线程中的哪一个执行我的任务(类似于“线程 #3 of 5正在执行此任务”)?
java - 队列满时ThreadPoolExecutor阻塞?
我正在尝试使用 ThreadPoolExecutor 执行大量任务。下面是一个假设的例子:
问题是我很快就得到了一个,java.util.concurrent.RejectedExecutionException
因为任务的数量超过了工作队列的大小。但是,我正在寻找的期望行为是让主线程阻塞,直到队列中有空间。实现这一目标的最佳方法是什么?
java - 如何在 FutureTask 中捕获异常
在发现在 Java 1.6(以及来自 Eclipse)中FutureTask
运行会吞下方法中的异常后,我试图想出一种方法来捕获这些异常,而无需在我的所有实现中添加 throw/catch。Executors.newCachedThreadPool()
Runnable.run()
Runnable
API 建议重写FutureTask.setException()
应该对此有所帮助:
导致此 Future 报告一个 ExecutionException,并将给定的 throwable 作为其原因,除非此 Future 已被设置或已被取消。此方法在计算失败时由 run 方法在内部调用。
然而,这个方法似乎没有被调用(使用调试器运行显示异常被 捕获FutureTask
,但setException
没有被调用)。我编写了以下程序来重现我的问题:
我的主要问题是:如何捕获 FutureTask 中抛出的异常?为什么不setException
叫?
另外我想知道为什么Thread.UncaughtExceptionHandler
不使用该机制FutureTask
,有什么原因吗?