问题标签 [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 - 重新初始化 Executor 的最佳实践
我有一个Swing
应用程序,它使用 aThreadPoolExecutor
来执行多个任务。在某一时刻,我想重新初始化所有内容。我正在使用executor.purge();
和 executor.getQueue().clear()
;这够了吗?有没有更好的方法/做法来执行此操作?提前致谢。
java - 当作业到达 threadPoolExecution 时调用所有线程
在常见的 workQueue 即 adPoolExecution 架构中,当一个作业到达时,只调用一个线程并由该线程完成工作。相反,我希望所有线程都被调用并且所有线程都执行任务。
我的情况如下。我有 5000 个数据项,我必须对每个数据项运行一个任务。事实证明,一个一个运行它很慢,因此我想在这里使用线程。这里假设我使用了 5 个线程。第一个线程将执行前 1000 个数据项,第二个线程将执行接下来的 1000 个数据项,其他将紧随其后。现在,当需要在这 5000 个数据项上执行的作业到达时,必须调用所有 5 个线程,或者更确切地说,将其从睡眠状态中恢复,以便它可以执行其任务。
这怎么可能在 java 中使用 theadPoolExecution。我知道将同一作业的 5 个副本插入队列可能会有所帮助。但这有很多副作用,比如如果一个线程快速完成它的工作,它将占用其他人的工作。
谢谢 Vineeth
java - 为什么 ThreadPoolExecutor 在 Eclipse 和命令行中运行 Java 程序时表现不同?
任何人都可以解释为什么当我从 Eclipse (Juno) 运行这段代码时会抛出 OOME,但是当我从命令行运行它时可以正常工作?我在这两种情况下都使用 -Xmx256M。
这是 Eclipse 输出
我在笔记本上运行它,不确定它在其他 PC 上的表现如何。
android - Android 上的多个同时 HTTP 请求
所以,我在 AsyncTask 中有下面的代码,并且想要调用 7 个不同的异步 HTTP 请求。一切正常,所有 7 个 execute() 方法同时启动(花几毫秒,这很棒)。
不幸的是,这种方法所花费的时间是大约。16 秒。如果我排除所有执行程序的内容并在原始工作程序 Asynctask 上调用 HTTP 下载方法,则需要 aprox。9 秒。因此,实际上按顺序而不是并发花费的时间更少。任何想法为什么会发生这种情况?也许服务器端的东西?也许是因为执行程序是在 Asynctask 上启动的?非常感谢 !
java - JDK 6 的 LinkedBlockingQueue 替代方案
我正在为我的线程池使用LinkedBlockingQueue
而且我遇到了内存泄漏错误(内存中充满了 LinkedBlockingQueue 节点,逐渐变慢),这在 JDK 7 中已修复。
我现在不想更改运行时环境或我的 JDK。
与 BlockingQueue 接口的其他实现不同,LinkedBlockingQueue 没有大小限制。你能建议任何替代队列吗?
java - 使用 ThreadPoolExecutor 进行条件阻塞
ThreadPoolExecutor
如果已达到最大线程数,我不仅想扩展为阻塞,而且还想在我可以设置的单独条件下扩展。我不确定该怎么做,或者是否有可能。
看起来提供一个 ThreadFactory 如果设置了条件则不会创建线程可能是要走的路,但我不确定这是否是最好的方法。是否有可能在设置标志后没有使用额外的线程,因此不需要使用工厂,因此我的操作没有放在队列中但可以运行?
java - Executors:如果任务是递归创建的,如何同步等待所有任务完成?
我的问题与这里的这个问题密切相关。正如在那里发布的那样,我希望主线程等到工作队列为空并且所有任务都完成。然而,在我的情况下,问题是每个任务都可能递归地导致提交新任务进行处理。这使得收集所有这些任务的未来有点尴尬。
我们当前的解决方案使用忙等待循环来等待终止:
numTasks 是一个随着每个新任务的创建而增加的值。这行得通,但我认为由于忙于等待,这不是很好。我想知道是否有一种好方法可以让主线程同步等待,直到被显式唤醒。
android - PhoneGap Google Cloud Messaging Android 问题
我不断收到这个错误。这发生在应用程序首次打开并将设备注册到 Google Cloud Messaging 之后。一切似乎都正常,但是我暂停了应用程序,然后一旦它恢复,它会出于某种原因调用取消注册功能,然后立即崩溃,但随后继续使用 Google Cloud Messaging 重新注册设备,以便我重新进入应用程序如果它没有强制关闭,它应该处于正确的状态。然后,如果我在此之后暂停并恢复应用程序,它就不再强制关闭。
有没有其他人对此有任何经验或对造成这种情况的任何想法?
我使用https://github.com/marknutter/GCM-Cordova实现了 GCM PhoneGap 插件
java - 从 ThreadPoolExecutor 获取单个线程
我正在运行带有多个线程的 ThreadPoolExecutor。我想在线程中操作一些数据,所以我想向线程发送一个对象,并在它完成使用数据后。我知道的唯一方法是等到线程使用 join() 完成,然后使用数据。问题是,我无法从 ThreadPoolExecutor 获得单个线程。我想做这样的事情:
其余代码....
有人有办法吗?我知道我可以使用 Callable 但我想避免这种情况,因为我已经有预先存在的代码......
multithreading - Netty OrderedMemoryAwareThreadPoolExecutor 没有创建多个线程
我将 Netty 用于多线程 TCP 服务器和单个客户端持久连接。客户端发送许多二进制消息(在我的用例中为 10000 条),并且应该接收每条消息的答案。我在管道中添加了一个 OrderedMemoryAwareThreadPoolExecutor 来处理在多个线程上执行 DB 调用。
如果我在 messageReceived() 方法中运行数据库调用(或使用 Thread.currentThread().sleep(50) 模拟它),那么所有事件都由单个线程处理。
对于 messageReceived() 的简单实现,服务器按预期创建了许多执行线程。
请问我应该如何配置 ExecutionHandler 以获取业务逻辑的多个线程执行器?
这是我的代码: