让我给你一个场景。
假设我加载的第一个 Activity 还创建了一个线程,该线程将在后台无限期运行。
现在,如果我转到另一个 Activity,我假设我最初在主 Activity 中创建的线程将继续运行。
那么,现在回答我的主要问题 - 为了从其他 Activity 管理这个后台线程,将对该线程的引用存储在单例对象中是否安全?
最佳答案
是也不是。理论上,你不会有问题,但你不能让引用转义。
将单例对象中的引用保持私有(private)可能会出现问题,它不得将引用传递给任何其他对象或允许任何其他对象访问它,否则它可能会失去控制。
其次,您的 Activity 创建的线程不得允许访问其成员变量或允许对它们的引用转义。
这方面的一本好书是 Brian Goetz 的“Java Concurrency in Practice”
关于java - 在单例中保留对线程的引用是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4183582/