问题标签 [executors]
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 而不是新线程
我目前正在编写一个多个客户端将连接到的服务器。通信协议基本上是服务器向客户端发送任务,客户端在执行任务时响应。客户端保持与服务器的连接,并且永远不应断开连接。
目前我正在启动一个新线程来处理每个客户端。在精神上,我目前的解决方案是这样的:(来自Java Concurrency in practice 的来源)
但我想使用 Executors,因为它们看起来更稳定且可扩展性更好。因此,为了让服务器能够向客户端发送消息,我需要将客户端与运行它们的 Executor 分开跟踪。因此,如果我将客户端放在 CopyOnWriteArrayList 客户端中的位置,然后在 Server 类中有类似的内容:
这将允许我遍历 CopyOnWriteArrayList 以便向所有客户端发送命令并删除断开连接的客户端。这是一个强大的解决方案吗?如果一个可运行对象由于某种原因会传播一个异常给它,那么 Executor 会发生什么?
netty - netty websocket + 连续PERIODIC数据推送
从netty中的websocket服务器定期(比如每n秒)连续推送一些数据的最佳方法是什么?
编辑 :
我遇到了这篇文章:使用 Netty 在 Java 中发送连续数据的最佳方法,根据答案,while/sleep 的可扩展性不是很好,如何在 Executor 上安排工作?
android - IntentService 使用 ThreadPoolExecutor... 推荐与否?
我正在设计一个 android 应用程序,它将收听传入的 SMS 并以特定方式处理它们。我有一个接收消息并将其发送到意图服务的广播接收器:
意图服务的目的是将 SMS 保存到我自己的数据库,然后通过 HTTP POST 将该消息发送到服务器,评估结果并更新应用程序的数据库并最终回复发送者。到目前为止一切都很好,但是由于有可能同时有很多 SMS 到达,我想将与服务器的通信解耦,将其放在另一个线程中。
所以到目前为止我正在做的是:
到目前为止一切都很好,但我不相信这个有大量消息的实现。
所以,我的问题是:
在意图服务中,是否建议使用 ThreadPoolExecutor?我最终会得到这样的结果:
如果一段时间内没有收到消息并且 IntentService 停止,会发生什么情况。它创建的线程会继续运行吗?
我不知道这种方法是否是处理我想要完成的事情的最佳方式。
谢谢
更新:
- 此应用程序中根本没有 UI 活动。
- 由于与服务器的通信可能需要相当长的时间,我想尽量减少消息的处理时间,因此队列中的下一条短信被快速提取并开始处理。
你
java - 访问由线程池运行的对象
对于我的程序,我使用 ConcurrentHashMap 来保存对多个正在运行的对象的引用。在我的服务器中,我有:
这会起作用吗,因为我仍然可以从 ConcurrentHashMap 访问聊天室,还是我必须对线程池做些什么?
java - 如何从 ScheduledThreadPoolExecutor 取消挂起的项目?
我有一项任务需要我安排任务并在发生特定事件时将其删除。我正在使用 ScheduledThreadPoolExecutor 来安排任务,这非常简单。但是,我找到了两种取消挂起项目的方法,它们看起来都有些奇怪。
我很好奇它们中的任何一个是否符合生产质量。如果两者都不是,那你有什么建议?
这是我所做的工作的骨架:
这是候选人1:
这是候选人2:
两者对我来说都像是 hack,因为它们依赖于 ScheduledExecutor 接口中未指定的 ScheduledThreadPoolExecutor.queue 属性。我有点担心我可能会违反 ScheduledThreadPoolExecutor 的不变量,我会发现它太晚了。
那么,这些片段会做我想让他们做的事情吗?有没有更好/更清洁的方法来做到这一点?
java - Java-使用invokeAll按顺序获取未来结果,但仅适用于某些线程
我......真的不知道如何更好地表达标题。但基本上,我所拥有的是一个线程池,所有这些线程都在忙着工作。我希望他们按照分配的顺序报告他们的结果,但同时,我想分批工作。为了说明,例子是
基本上,池线程有 8 个线程,我最终有 20 个任务(这些只是示例)。如果我理解正确的话,它现在的工作方式是等到所有 20 个任务都完成后再按顺序输出它们(从 1 到 20)。这个程序应该做的是输出一个连续的字节流(由线程处理,由于我需要保持顺序不变,所以我使用了未来的接口)。虽然我不介意等到所有 20 个任务都完成后,但无论如何,线程是否可以按顺序简单地输出。
如果没有办法,或者我只是完全误解了 invokeAll 的工作原理,那么也欢迎澄清。提前致谢!执行者有点令人困惑,因为我才刚刚了解它们。
随机附录,我什至可以从可调用对象中返回字节数组吗?
java - 重新初始化 Executor 的最佳实践
我有一个Swing
应用程序,它使用 aThreadPoolExecutor
来执行多个任务。在某一时刻,我想重新初始化所有内容。我正在使用executor.purge();
和 executor.getQueue().clear()
;这够了吗?有没有更好的方法/做法来执行此操作?提前致谢。
java - 有没有办法将任务放回执行程序队列
我有一系列任务(即Runnable
s)要由Executor
.
每个任务都需要一定的条件才能继续进行。我很想知道是否有办法以某种方式配置Executor
以在队列末尾移动任务,并在条件有效并且任务能够执行和完成时尝试稍后执行它们。
所以行为类似于:
Thread-1
从队列中获取任务run
并被调用- 内部
run
条件尚未生效 - 任务停止并将
Thread-1
任务放在队列末尾并获取下一个要执行的任务 - 稍后
Thread-X
(从线程池)再次从队列中选择任务条件有效并且正在执行任务
java - ScheduledThreadPoolExecutors 和自定义队列
如果我使用 aThreadPoolExecutor
我有各种构造函数,我可以传递/使用我自己的队列作为池的工作队列。
现在我看到 aScheduledThreadPoolExecutor
是的子类,ThreadPoolExecutor
但构造函数要少得多。
有没有办法使用 aScheduledThreadPoolExecutor
并且仍然使用我自己的工作队列?
java - 关于同步的不同方法
请不要将以下问题视为重复问题..!
我开发了一个类,它可以让多线程按顺序运行,一次一个,按顺序运行。该类的claimAccess函数和releaseAccess函数之间的所有应用程序代码一次只能在一个线程中执行。所有其他线程将在队列中等待,直到前一个线程完成。现在请告知是否可以通过执行器、循环障碍或倒计时闩锁等其他方式来实现同样的事情..!!请建议如何通过其他方法来构建