问题标签 [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.

0 投票
2 回答
3397 浏览

java - 对服务器套接字客户端使用 Executor 而不是新线程

我目前正在编写一个多个客户端将连接到的服务器。通信协议基本上是服务器向客户端发送任务,客户端在执行任务时响应。客户端保持与服务器的连接,并且永远不应断开连接。

目前我正在启动一个新线程来处理每个客户端。在精神上,我目前的解决方案是这样的:(来自Java Concurrency in practice 的来源)

但我想使用 Executors,因为它们看起来更稳定且可扩展性更好。因此,为了让服务器能够向客户端发送消息,我需要将客户端与运行它们的 Executor 分开跟踪。因此,如果我将客户端放在 CopyOnWriteArrayList 客户端中的位置,然后在 Server 类中有类似的内容:

这将允许我遍历 CopyOnWriteArrayList 以便向所有客户端发送命令并删除断开连接的客户端。这是一个强大的解决方案吗?如果一个可运行对象由于某种原因会传播一个异常给它,那么 Executor 会发生什么?

0 投票
1 回答
1514 浏览

netty - netty websocket + 连续PERIODIC数据推送

从netty中的websocket服务器定期(比如每n秒)连续推送一些数据的最佳方法是什么?

编辑 :

我遇到了这篇文章:使用 Netty 在 Java 中发送连续数据的最佳方法,根据答案,while/sleep 的可扩展性不是很好,如何在 Executor 上安排工作?

0 投票
2 回答
1133 浏览

android - IntentService 使用 ThreadPoolExecutor... 推荐与否?

我正在设计一个 android 应用程序,它将收听传入的 SMS 并以特定方式处理它们。我有一个接收消息并将其发送到意图服务的广播接收器:

意图服务的目的是将 SMS 保存到我自己的数据库,然后通过 HTTP POST 将该消息发送到服务器,评估结果并更新应用程序的数据库并最终回复发送者。到目前为止一切都很好,但是由于有可能同时有很多 SMS 到达,我想将与服务器的通信解耦,将其放在另一个线程中。

所以到目前为止我正在做的是:

到目前为止一切都很好,但我不相信这个有大量消息的实现。

所以,我的问题是:

在意图服务中,是否建议使用 ThreadPoolExecutor?我最终会得到这样的结果:

如果一段时间内没有收到消息并且 IntentService 停止,会发生什么情况。它创建的线程会继续运行吗?

我不知道这种方法是否是处理我想要完成的事情的最佳方式。

谢谢

更新:

  • 此应用程序中根本没有 UI 活动。
  • 由于与服务器的通信可能需要相当长的时间,我想尽量减少消息的处理时间,因此队列中的下一条短信被快速提取并开始处理。

0 投票
1 回答
444 浏览

java - 访问由线程池运行的对象

对于我的程序,我使用 ConcurrentHashMap 来保存对多个正在运行的对象的引用。在我的服务器中,我有:

这会起作用吗,因为我仍然可以从 ConcurrentHashMap 访问聊天室,还是我必须对线程池做些什么?

0 投票
3 回答
5626 浏览

java - 如何从 ScheduledThreadPoolExecutor 取消挂起的项目?

我有一项任务需要我安排任务并在发生特定事件时将其删除。我正在使用 ScheduledThreadPoolExecutor 来安排任务,这非常简单。但是,我找到了两种取消挂起项目的方法,它们看起来都有些奇怪。

我很好奇它们中的任何一个是否符合生产质量。如果两者都不是,那你有什么建议?

这是我所做的工作的骨架:

这是候选人1:

这是候选人2:

两者对我来说都像是 hack,因为它们依赖于 ScheduledExecutor 接口中未指定的 ScheduledThreadPoolExecutor.queue 属性。我有点担心我可能会违反 ScheduledThreadPoolExecutor 的不变量,我会发现它太晚了。

那么,这些片段会做我想让他们做的事情吗?有没有更好/更清洁的方法来做到这一点?

0 投票
2 回答
7576 浏览

java - Java-使用invokeAll按顺序获取未来结果,但仅适用于某些线程

我......真的不知道如何更好地表达标题。但基本上,我所拥有的是一个线程池,所有这些线程都在忙着工作。我希望他们按照分配的顺序报告他们的结果,但同时,我想分批工作。为了说明,例子是

基本上,池线程有 8 个线程,我最终有 20 个任务(这些只是示例)。如果我理解正确的话,它现在的工作方式是等到所有 20 个任务都完成后再按顺序输出它们(从 1 到 20)。这个程序应该做的是输出一个连续的字节流(由线程处理,由于我需要保持顺序不变,所以我使用了未来的接口)。虽然我不介意等到所有 20 个任务都完成后,但无论如何,线程是否可以按顺序简单地输出。

如果没有办法,或者我只是完全误解了 invokeAll 的工作原理,那么也欢迎澄清。提前致谢!执行者有点令人困惑,因为我才刚刚了解它们。

随机附录,我什至可以从可调用对象中返回字节数组吗?

0 投票
1 回答
305 浏览

java - 重新初始化 Executor 的最佳实践

我有一个Swing应用程序,它使用 aThreadPoolExecutor来执行多个任务。在某一时刻,我想重新初始化所有内容。我正在使用executor.purge();executor.getQueue().clear();这够了吗?有没有更好的方法/做法来执行此操作?提前致谢。

0 投票
3 回答
2847 浏览

java - 有没有办法将任务放回执行程序队列

我有一系列任务(即Runnables)要由Executor.
每个任务都需要一定的条件才能继续进行。我很想知道是否有办法以某种方式配置Executor以在队列末尾移动任务,并在条件有效并且任务能够执行和完成时尝试稍后执行它们。
所以行为类似于:

  1. Thread-1从队列中获取任务run并被调用
  2. 内部run条件尚未生效
  3. 任务停止并将Thread-1任务放在队列末尾并获取下一个要执行的任务
  4. 稍后Thread-X(从线程池)再次从队列中选择任务条件有效并且正在执行任务
0 投票
1 回答
1982 浏览

java - ScheduledThreadPoolExecutors 和自定义队列

如果我使用 aThreadPoolExecutor我有各种构造函数,我可以传递/使用我自己的队列作为池的工作队列。
现在我看到 aScheduledThreadPoolExecutor是的子类,ThreadPoolExecutor但构造函数要少得多。
有没有办法使用 aScheduledThreadPoolExecutor并且仍然使用我自己的工作队列?

0 投票
2 回答
74 浏览

java - 关于同步的不同方法

请不要将以下问题视为重复问题..!

我开发了一个类,它可以让多线程按顺序运行,一次一个,按顺序运行。该类的claimAccess函数和releaseAccess函数之间的所有应用程序代码一次只能在一个线程中执行。所有其他线程将在队列中等待,直到前一个线程完成。现在请告知是否可以通过执行器、循环障碍或倒计时闩锁等其他方式来实现同样的事情..!!请建议如何通过其他方法来构建