我正在用 Java 编写一个聊天服务器。我使用的是可运行类的固定数组,其中数组中的每个元素代表一个客户端。创建的线程处于从套接字流读取的无限循环中。
现在我想用一个列表来完成它,这样我就不必担心数组大小,而且这听起来更合法。但是我无法确定删除项目是否也会终止线程。其实我不知道它是做什么的。另外,我想知道在这种情况下使用列表是否还有其他可能的问题。最后,定时器数组怎么样?由于我已经为每个客户端使用了计时器,因此从计时器列表中删除计时器是否也会停止其计划?有什么可能的问题吗?
最佳答案
对象本身存在 - 在列表中存储对该对象的引用不会改变其行为。
因此,如果您有一个正在线程中运行的 Runnable 任务,将其添加到列表中/从列表中删除它不会对该 Runnable 产生任何影响,并且线程将继续运行它。
这同样适用于计时器和任何其他对象。
旁注:在一种情况下,从列表中删除对象会产生影响:如果该对象只能通过该列表访问。被删除后,由于不再可达,因此有资格进行垃圾回收。但这不适用于正在运行的线程或 Activity 计时器。
关于java - 从扩展可运行的类列表中删除项目是否会终止其线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11924897/