问题标签 [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.
java - ScheduledThreadPoolExecutor 的构造函数中“核心池大小”的含义
我是新手ScheduledThreadPoolExecutor
(因为我通常使用 simple Timer
,但人们一直反对它),我不太明白传递给ScheduledThreadPoolExecutor(int)
构造函数的适当整数值是什么。
谁能解释一下?
谢谢
java - 在 Java 中使用 Executor 编写文件
我有一个List<Map<String,String>>
ie;地图列表。每个 Map 都有File Name
asKey
和File Content
as Value
。
我在上面的列表中有超过 250 万张地图。我的要求是遍历此列表并在读取每个 Map 键和值的输出文件夹中创建文件。所以最后我将拥有 250 万个文件。需要4个多小时。然后我停止程序。如果我为整个 250 万条记录运行该程序,我不知道确切的时间。
我需要使用多线程对此进行优化。
如何使用 Java 优化它Executors/ Fork/ Join
(我有Java 7
)
android - Asynctask 速度与 ExecutorService 中的相同进程
我的应用程序需要扫描子网以查找响应设备(并检查端口 80/8080 以获取特定服务)。我正在使用 executorservice/threadpool 来完成扫描任务 - 大约需要 30 秒才能完成。
我重写了上述过程以使用 asynctask - 该过程现在需要更长的时间(很多分钟)。
我已经回到原始的 executorservice 并将整个过程包装在 asynctask 中作为妥协(因此它不会阻塞 UI 并快速完成)但怀疑这是最佳实践。它还会产生进度更新、取消等问题。
最好是使用较慢的流程,提供 UI 更新/可取消设施,还是(因为整个过程只需要 30 秒)- 使用更快的执行器服务?
谢谢。
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());
产生了问题。
java - ExecutorService 与 ThreadPoolExecutor 使用 LinkedBlockingQueue
我正在开发一个多线程项目,在进行负载和性能测试时,我需要生成多个线程来测量客户端代码的端到端性能。所以我创建了下面使用的代码ExecutorService
。
下面是代码ExecutorService
:
问题陈述:
现在我正在网上阅读一些文章。我发现那里也有ThreadPoolExecutor
。所以我很困惑我应该使用哪一个。
如果我将上面的代码替换为:
至:
这会有什么不同吗?我试图了解我的原始代码使用ExecutorService
和粘贴的新代码之间有什么区别ThreadPoolExecutor
。我的一些队友说第二个(ThreadPoolExecutor)是正确的使用方式。
任何人都可以为我澄清这一点吗?
java - Java - 线程池
我的预定线程池--->
线程 1--->
线程2--->
Thread 1
每 10 秒执行一次。Thread 2
应该在 30 分钟后开始。
Thread 1
行为与预期一样Thread2
,预计在 30 分钟后开始,在 1 小时后开始。
延迟thread1
是否导致了这个问题?如果是这样,thread2
考虑到我们在线程池中只有一个线程,当线程 1 完成时应该给予优先级。为什么Thread2
在 1 小时后启动时间过长?
我一无所知,期待一些指示。请帮助我。
java - PriorityBlockingQueue 支持的 ThreadPoolExecutor 似乎不起作用
我有大量图片要从服务器获取,我想获取一些优先级高于其他图片的图片,所以我实现了自己的图片ThreadPoolExecutor
,它返回一个FutureTask
实现Comparable
但它似乎不起作用的图片。这些任务或多或少按照我将它们添加到队列中的顺序进行处理。我已经调试了BlockingQueue
myThreadPoolExecutor
并发现当我添加Runnable
更高优先级的 my 时,它并没有在队列顶部一直向上移动。这是代码
我以这种方式将任务添加到池中:
我的BitmapLoaderRunnable
工具Comparable
和当我调试该compareTo
方法时被调用。我究竟做错了什么?谢谢
编辑:下面是我的可运行文件的代码
java - 从正在运行的线程中读取数据
我知道 Java 线程相关的问题已经被问过很多次,但我一直无法拼凑出我的问题的答案。我还是线程编程的新手,所以请原谅我的无知。
我不了解与一致性相关的问题,并且需要根据需要进行适当的同步。问题是关于在当前正在执行的线程中的对象上调用方法。考虑以下示例(这是实验性的,因此请原谅任何糟糕的设计选择):
- 我有一个 JSP 进行一些搜索并返回结果。响应必须在 10 秒内发送给用户(无论搜索是否能够完成)。
- JSP 创建一个 ThreadPoolExecutor 并使用它来启动一个搜索线程。
- JSP 进入睡眠状态 2 秒。
- JSP 唤醒并检查搜索线程是否有任何结果。搜索 obj 提供了一个 getCurrentResultsCount() 方法,该方法返回到目前为止找到的结果的 int 计数。
- 步骤 3 和 4 重复 5 次,然后将响应发送给用户。搜索线程可以根据需要继续运行(完成后,结果存储在 servlet 上下文或数据库中,以后可以访问)
我的代码如下所示:
以我的方式调用 getCurrentResultsCount() 方法有什么问题或风险吗?它似乎在低容量使用情况下工作正常,但如果有更高的容量,我会冒问题吗?
非常感谢任何帮助。谢谢!
java - ThreadPoolExecutor.worker.run 花费太多时间
我有几个任务在CachedThreadPool
. 经过一些分析后,我发现任务本身只运行了 10% 的时间,而其他 90% 的时间由threadpoolexecutor$worker.run
(我jvisualvm
用于分析)使用。
在这里我被困住了。我不知道到底threadpoolexecutor$worker.run
在做什么,为什么要花这么多时间来做,以及如何解决这个问题。我需要任务尽可能快地运行。
这就是分析器所说的:
可能Self time
意味着线程正在休眠?
提前致谢。PS请为愚蠢的人道歉,我不是一个伟大的Java程序员。
java - ThreadPoolExecutor 在线程死亡时清理
我有一个ThreadPoolExecutor
运行几个核心和一定数量的最大线程。运行的任务为每个线程创建 HornetQ(独立)连接,并在线程运行时使它们保持活动状态。keepAliveTime
但是,当线程到期并且线程死亡时,我们无法关闭它们。有没有办法在线程死亡之前清理资源?
解决这个问题的一种方法是对 HornetQ 连接使用池化解决方案。
任何建议都受到高度赞赏。