当前位置: 首页 > 面试题库 >

Java线程设置为null时会发生什么?

乐成济
2023-03-14
问题内容

线程启动后,如果该线程的引用设置为null,那么该线程将如何处理?会停止吗?它有资格获得GC吗?

像这样:

t.start();
t = null;

问题答案:

实时线程将继续运行,即使其引用设置为null。
就像任何其他对象一样,当没有任何引用时,它就有资格使用GC。棘手的一点是,即使您的程序未保留一个 正在运行的线程
在ThreadGroup中的引用,因此 也永远不会 正在运行的线程进行GC。



 类似资料:
  • 问题内容: 我知道从线程调用是一个坏主意。但是,如果线程使用创建新进程,将会发生什么? 新进程将是创建线程的主线程的子进程。我认为。 如果其父级先完成,则新进程将附加到init进程中。它的父级是主线程,而不是创建它的线程。 如果我错了,请纠正我。 问题答案: 新进程将是创建线程的主线程的子进程。我认为。 创建一个新的过程。一个进程的父进程是另一个进程,而不是线程。因此,新流程的父级是旧流程。 请注

  • 问题内容: 为什么在调用execute方法时将未处理的异常重新抛出在worker中?结果,将在下一次执行时创建新线程,以最大化线程数 问题答案: 为什么当RuntimeException发生时,java ThreadPoolExecutor杀死线程? 我只能猜测, 直接进行线程调用而不将其包装在a中的原因是,这样,即使您不在乎结果,也不会招致该线程的开销。 __ 如果您的线程抛出,这是很罕见的事情

  • 来自文档:http://docs.python.org/2/library/thread 让我们在这里只讨论非守护进程线程。因为第一个引号没有特别提到非守护进程线程,所以我假设,如果主线程退出,即使是非守护进程线程也应该被杀死。然而,第二句引文却表明了另一种情况。事实上,当主线程退出时,非守护进程线程确实不会被杀死。那么,这里的第一个引用有什么意义呢?

  • 问题内容: 我们有多个线程调用上。 我的理论是,当由两个线程同时调用时,实际上仅将要添加的两个对象之一添加到。这看似合理吗? 如果是这样,您如何解决呢?使用类似吗? 问题答案: 对于ArrayList上的两个线程同时调用add时发生的情况,没有任何保证的行为。但是,根据我的经验,两个对象的添加都很好。与列表相关的大多数线程安全问题在添加/删除时都会处理迭代。尽管如此,我强烈建议不要将Vanilla

  • 我看到,如果在活动中实例化Dagger 2组件,那么稍后在方法中将其置空,如图所示。 如果我不该实例会发生什么,会发生什么? 旁注:在评论中,我发现了一个有用的提示,为什么人们会将其设置为,这很有说服力:“我认为这没有必要,但它定义的范围非常清楚”。

  • 问题内容: 在某个线程上调用an 时,该线程会发生什么? 问题答案: 目标线程是“中断的”。通常,在该线程中设置一个标志,该线程可以查看该标志(带有)。如果目标线程当前在某些I / O上被阻塞,则分别使用an 或an 唤醒它。 线程中断是微调线程的一种温和方法。它是用来给线程有机会退出 干净 ,而不是,这更像是一支突击步枪射击的线程。