gpt4 book ai didi

java - 为什么这个小程序有销毁方法?

转载 作者:行者123 更新时间:2023-12-04 07:09:43 28 4
gpt4 key购买 nike

我一直试图通过研究 "Welcome to HotJava" 的代码来了解小程序。小程序。我使用 Windows 版本的 Jad 反编译了 *.class 文件,我看到以下几行代码

public void init() {
// Skip some lines...
addMouseListener(this);
}

public void destroy()
{
removeMouseListener(this);
}

这里真的需要销毁方法吗?如果小程序即将结束,为什么它需要将自己作为鼠标监听器移除?

最佳答案

destroy()方法清理资源,以便它们可以被释放。当整个 JVM 将关闭时,在关闭之前释放所有资源并不重要,但即使不是绝对必要,做正确的事情也总是一个好主意。

根据线程模型,如果您将自己保留为鼠标监听器,那么如果发生鼠标事件,您仍然会收到通知。如果在同一个 JVM 中有多个 Applet 并且只有一个 Applet 正在结束,那么如果您留下一个不会对其采取任何行动的监听器,那么您可以使线程处于一种有趣的状态。这样做可能会锁定其他小程序。

编辑:

通过处于有趣状态的线程,我的意思是(例如)如果 Applet 线程已停止的监听器将消息排队到没有人正在读取的队列中,那么最终队列将填满并且调度线程将阻塞。 (更详细地说,让我们假设监听器只对消息进行排队,并且 Applet 中有一个线程——现在停止了——从这个队列中读取。一旦队列填满,它就会阻塞!)

使用鼠标监听器,特别是,您可能很安全,假设 Applet 退出时它不再可见并且无法再接收鼠标事件。但是,如果使用不同类型的监听器,您可能会遇到麻烦。始终做正确的事情,即使它不是真正必要的,也会让您养成习惯,这样您就不会在真正关键的时候忘记做正确的事情。 :)

关于java - 为什么这个小程序有销毁方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/574056/

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