gpt4 book ai didi

java - Java 线程是否需要清理?

转载 作者:搜寻专家 更新时间:2023-10-30 19:54:16 26 4
gpt4 key购买 nike

我看到所有停止和销毁以及处理清理方法的任何其他内容都已弃用。

如果我有一个新的 Thread() 或一个扩展线程运行的类,我是否需要在它的 run() 方法中做任何事情,而不是让它结束常规执行?或者是否有一种后台机制可以理解 Thread 已经运行完它的所有任务并且可以被销毁?

最佳答案

当您在线程上调用 start() 时,靠近操作系统的 JVM 中的 native 机制将启动您的线程,最终执行 run()。当 run() 完成时,JVM 会处理所有事情。

您可能担心垃圾收集或其他资源清理。当然,如果你在一个线程中打开文件/网络连接,它必须像其他地方一样关闭。此外,垃圾收集器在分析 Activity 对象时,会考虑从正在运行的线程引用的对象。但是当线程结束时,它引用的所有对象(或传递给线程的 Runnable 实现)都有资格进行垃圾回收。

Thread 的退出方法的快速和脏编辑,因为可见的 contextClassLoader 丢失 x.x

private void exit() {
if (group != null) {
group.remove(this);
group = null;
}
/* Aggressively null out all reference fields: see bug 4006245 */
target = null;
/* Speed the release of some of these resources */
threadLocals = null;
inheritableThreadLocals = null;
inheritedAccessControlContext = null;
blocker = null;
uncaughtExceptionHandler = null;
}

关于java - Java 线程是否需要清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5123227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com