java - 使用太多的听众是否有潜在的减速?

标签 java actionlistener

在我正在编写的程序中,我将至少有 64 个 JButton。是写一个 ActionListener 还是有 64 个,每个一个?我不认为我会为每个 JButton 路由使用一个监听器,但这确实让我想知道一些事情。是否有太多听众实际上会影响性能的点?如果有这样的事情,需要多少?

最佳答案

每个 JButton 都将保存一个列表(或数组,或集合,或以其他方式实现)对其监听器的引用,同时不知道其他按钮的监听器。当事件发生时,按钮会调用它的监听器。因此,为其他按钮设置许多听众不会减慢听众的调用速度。所以这里没有减速。

我可以预见的唯一减速原因是缓存未命中。拥有许多具有不同代码的监听器将意味着更多的缓存未命中。

但是让一个监听器包含大量复杂的代码来处理所有情况可能会更慢。您仍然有很多字节码,并且您可能有比多个监听器情况下更多的分支。

结论: 让你的听众cohesive .使用不同的监听器来处理不同的操作,并使用相同的监听器来处理执行类似操作的按钮。它会给你更好的代码和速度。

关于java - 使用太多的听众是否有潜在的减速?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31208291/

相关文章:

java - 使用 JButton 增加/减少 JTextField 的值时遇到问题

java - 从命名空间 xml 中提取节点及其全部内容

java - 继承关系 没有为实体指定标识符

java - 如何创建第二个 "ActionListener"

java - 从另一个 actionlistener 调用一个 actionlistener

java - 从另一个类获取 jtextfield 的值到 actionperformed 方法

java - 在 AS400 上显示 DB2 中的 BLOB 内容

java - 如何使用 Spring Boot Gradle 插件和 bootJar 任务有条件地排除 java 文件?

java - 使用Java Mail发送邮件错误

java - 无法从不同类别启动动画到另一个类别