假设一个Java应用包含主线程和一个负责定期清理临时文件的线程。在以下场景中,为确保该清理线程仅在所有其他非清理线程结束后才自动退出,以下哪种做法最符合设计原则且最简洁高效?
答案解析
A选项错误,如果主线程在结束前等待清理线程完成,那么如果清理线程需要执行较长时间,会阻塞主线程,降低程序效率;清理线程的结束应该与主线程解耦。B选项正确,守护线程会在所有非守护线程结束后自动终止,无需额外控制,适合后台任务。C选项错误,使用 volatile 变量需要显式编写线程的终止逻辑,代码复杂且易出错;并不能保证线程立即退出。D选项错误,stop() 方法已经被废弃,会导致线程资源无法正常释放,造成资源泄漏或者程序错误。
正确答案:B