问题标签 [threadpoolexecutor]

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.

0 投票
2 回答
8497 浏览

java - ScheduledThreadPoolExecutor 的构造函数中“核心池大小”的含义

我是新手ScheduledThreadPoolExecutor(因为我通常使用 simple Timer,但人们一直反对它),我不太明白传递给ScheduledThreadPoolExecutor(int)构造函数的适当整数值是什么。

谁能解释一下?

谢谢

0 投票
4 回答
1888 浏览

java - 在 Java 中使用 Executor 编写文件

我有一个List<Map<String,String>>ie;地图列表。每个 Map 都有File NameasKeyFile Contentas Value

我在上面的列表中有超过 250 万张地图。我的要求是遍历此列表并在读取每个 Map 键和值的输出文件夹中创建文件。所以最后我将拥有 250 万个文件。需要4个多小时。然后我停止程序。如果我为整个 250 万条记录运行该程序,我不知道确切的时间。

我需要使用多线程对此进行优化。

如何使用 Java 优化它Executors/ Fork/ Join(我有Java 7

0 投票
0 回答
40 浏览

android - Asynctask 速度与 ExecutorService 中的相同进程

我的应用程序需要扫描子网以查找响应设备(并检查端口 80/8080 以获取特定服务)。我正在使用 executorservice/threadpool 来完成扫描任务 - 大约需要 30 秒才能完成。

我重写了上述过程以使用 asynctask - 该过程现在需要更长的时间(很多分钟)。

我已经回到原始的 executorservice 并将整个过程包装在 asynctask 中作为妥协(因此它不会阻塞 UI 并快速完成)但怀疑这是最佳实践。它还会产生进度更新、取消等问题。

最好是使用较慢的流程,提供 UI 更新/可取消设施,还是(因为整个过程只需要 30 秒)- 使用更快的执行器服务?

谢谢。

0 投票
1 回答
705 浏览

java - 在 super.run() 调用后,线程类中的控制不会回来

我有一个线程工厂、执行程序、线程类和一个可运行类。这是线程类:(threadsCount 是一个 AtomicInteger,我用它来跟踪创建的线程数)

我的可运行类目前没有实现,但有空的 run() 方法。

当我尝试调用 Executor.execute(new RunnableClazz()) 时,控制权来到这个 Thread 类 - run() 方法,当它遇到 super.run() 时,它转到 RunnableClazz#run() 方法。

所有这些都很好。但问题是,在 RunnableClazz#run() 完成后,控件不会回到我的 Thread 类的“finally”块。

有任何想法吗?我是否需要在 run() 方法结束时手动杀死可运行对象?

我的可运行类:

调用这个 runnable 的方法如下所示:

请注意,我在服务器启动期间只创建了一次执行程序。我粘贴它只是为了说明我如何创建它。因此executor.execute(new RunnableClazz());产生了问题。

0 投票
6 回答
50201 浏览

java - ExecutorService 与 ThreadPoolExecutor 使用 LinkedBlockingQueue

我正在开发一个多线程项目,在进行负载和性能测试时,我需要生成多个线程来测量客户端代码的端到端性能。所以我创建了下面使用的代码ExecutorService

下面是代码ExecutorService

问题陈述:

现在我正在网上阅读一些文章。我发现那里也有ThreadPoolExecutor。所以我很困惑我应该使用哪一个。

如果我将上面的代码替换为:

至:

这会有什么不同吗?我试图了解我的原始代码使用ExecutorService和粘贴的新代码之间有什么区别ThreadPoolExecutor。我的一些队友说第二个(ThreadPoolExecutor)是正确的使用方式。

任何人都可以为我澄清这一点吗?

0 投票
2 回答
602 浏览

java - Java - 线程池

我的预定线程池--->

线程 1--->

线程2--->

Thread 1每 10 秒执行一次。Thread 2应该在 30 分钟后开始。

Thread 1行为与预期一样Thread2,预计在 30 分钟后开始,在 1 小时后开始。

延迟thread1是否导致了这个问题?如果是这样,thread2考虑到我们在线程池中只有一个线程,当线程 1 完成时应该给予优先级。为什么Thread2在 1 小时后启动时间过长?

我一无所知,期待一些指示。请帮助我。

0 投票
1 回答
3778 浏览

java - PriorityBlockingQueue 支持的 ThreadPoolExecutor 似乎不起作用

我有大量图片要从服务器获取,我想获取一些优先级高于其他图片的图片,所以我实现了自己的图片ThreadPoolExecutor,它返回一个FutureTask实现Comparable但它似乎不起作用的图片。这些任务或多或少按照我将它们添加到队列中的顺序进行处理。我已经调试了BlockingQueuemyThreadPoolExecutor并发现当我添加Runnable更高优先级的 my 时,它并没有在队列顶部一直向上移动。这是代码

我以这种方式将任务添加到池中:

我的BitmapLoaderRunnable工具Comparable和当我调试该compareTo方法时被调用。我究竟做错了什么?谢谢

编辑:下面是我的可运行文件的代码

0 投票
1 回答
978 浏览

java - 从正在运行的线程中读取数据

我知道 Java 线程相关的问题已经被问过很多次,但我一直无法拼凑出我的问题的答案。我还是线程编程的新手,所以请原谅我的无知。

我不了解与一致性相关的问题,并且需要根据需要进行适当的同步。问题是关于在当前正在执行的线程中的对象上调用方法。考虑以下示例(这是实验性的,因此请原谅任何糟糕的设计选择):

  1. 我有一个 JSP 进行一些搜索并返回结果。响应必须在 10 秒内发送给用户(无论搜索是否能够完成)。
  2. JSP 创建一个 ThreadPoolExecutor 并使用它来启动一个搜索线程。
  3. JSP 进入睡眠状态 2 秒。
  4. JSP 唤醒并检查搜索线程是否有任何结果。搜索 obj 提供了一个 getCurrentResultsCount() 方法,该方法返回到目前为止找到的结果的 int 计数。
  5. 步骤 3 和 4 重复 5 次,然后将响应发送给用户。搜索线程可以根据需要继续运行(完成后,结果存储在 servlet 上下文或数据库中,以后可以访问)

我的代码如下所示:

以我的方式调用 getCurrentResultsCount() 方法有什么问题或风险吗?它似乎在低容量使用情况下工作正常,但如果有更高的容量,我会冒问题吗?

非常感谢任何帮助。谢谢!

0 投票
0 回答
797 浏览

java - ThreadPoolExecutor.worker.run 花费太多时间

我有几个任务在CachedThreadPool. 经过一些分析后,我发现任务本身只运行了 10% 的时间,而其他 90% 的时间由threadpoolexecutor$worker.run(我jvisualvm用于分析)使用。

在这里我被困住了。我不知道到底threadpoolexecutor$worker.run在做什么,为什么要花这么多时间来做,以及如何解决这个问题。我需要任务尽可能快地运行。

这就是分析器所说的:

可能Self time意味着线程正在休眠?

提前致谢。PS请为愚蠢的人道歉,我不是一个伟大的Java程序员。

0 投票
1 回答
1254 浏览

java - ThreadPoolExecutor 在线程死亡时清理

我有一个ThreadPoolExecutor运行几个核心和一定数量的最大线程。运行的任务为每个线程创建 HornetQ(独立)连接,并在线程运行时使它们保持活动状态。keepAliveTime但是,当线程到期并且线程死亡时,我们无法关闭它们。有没有办法在线程死亡之前清理资源?

解决这个问题的一种方法是对 HornetQ 连接使用池化解决方案。

任何建议都受到高度赞赏。