java - 在单例中保留对线程的引用是否安全?

标签 java android multithreading singleton

让我给你一个场景。

假设我加载的第一个 Activity 还创建了一个线程,该线程将在后台无限期运行。

现在,如果我转到另一个 Activity,我假设我最初在主 Activity 中创建的线程将继续运行。

那么,现在回答我的主要问题 - 为了从其他 Activity 管理这个后台线程,将对该线程的引用存储在单例对象中是否安全?

最佳答案

是也不是。理论上,你不会有问题,但你不能让引用转义。

将单例对象中的引用保持私有(private)可能会出现问题,它不得将引用传递给任何其他对象或允许任何其他对象访问它,否则它可能会失去控制。

其次,您的 Activity 创建的线程不得允许访问其成员变量或允许对它们的引用转义。

这方面的一本好书是 Brian Goetz 的“Java Concurrency in Practice”

关于java - 在单例中保留对线程的引用是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4183582/

相关文章:

Android:预览显示不同的样式 - 操作栏

android - 获取背景以完全覆盖android手机

java - 多线程应用程序,动态创建新线程?

java - 不共享公共(public)资源的线程是否可以根据线程 ID/名称进行通知?

c++ - 链接基于 Qt 的应用程序时出错

java - 替换两个位置之间的字符串中的特定字符

java - Tomcat 7.0 : Error creating bean with name 'org. springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor

java - gradle lockfile源代码控制

java - 使用 Math.random 创建一个 int,在调用时选择一个新数字

Java 获取不同类的多个线程并发运行