java - 从扩展可运行的类列表中删除项目是否会终止其线程?

标签 java list timer runnable

我正在用 Java 编写一个聊天服务器。我使用的是可运行类的固定数组,其中数组中的每个元素代表一个客户端。创建的线程处于从套接字流读取的无限循环中。

现在我想用一个列表来完成它,这样我就不必担心数组大小,而且这听起来更合法。但是我无法确定删除项目是否也会终止线程。其实我不知道它是做什么的。另外,我想知道在这种情况下使用列表是否还有其他可能的问题。最后,定时器数组怎么样?由于我已经为每个客户端使用了计时器,因此从计时器列表中删除计时器是否也会停止其计划?有什么可能的问题吗?

最佳答案

对象本身存在 - 在列表中存储对该对象的引用不会改变其行为。

因此,如果您有一个正在线程中运行的 Runnable 任务,将其添加到列表中/从列表中删除它不会对该 Runnable 产生任何影响,并且线程将继续运行它。

这同样适用于计时器和任何其他对象。

旁注:在一种情况下,从列表中删除对象会产生影响:如果该对象只能通过该列表访问。被删除后,由于不再可达,因此有资格进行垃圾回收。但这不适用于正在运行的线程或 Activity 计时器。

关于java - 从扩展可运行的类列表中删除项目是否会终止其线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11924897/

相关文章:

python 设置更新列表或设置(列表)

c++ - 创建一个计时器以在 X 秒内调用一个函数

c# - 无法使用 JRE 7u51 在 Internet Explorer 11 中运行 Java 小程序

java - 在线程中使用同步

java - UltraEdit Java 编辑器设置

R:使用函数参数作为列表子元素的名称

Java临时文件的读写

java - 使用 lambda 过滤嵌套列表

java - Java 和 Web 套接字中的 TimerTask

JavaScript 秒表 - 显示前导数字时遇到问题