为什么在Java中有两个Timer类(一个在javax.swing下,一个在java.util下)?

为什么在Java中有两个Timer类(一个在javax.swing下,一个在java.util下)?,第1张

为什么在Java中有两个Timer类(一个在javax.swing下,一个在java.util下)?

这是javax.swing.Timer和java.util.Timer之间的区别:

javax.swing.Timer
  • 适用于较简单的情况,使用较少的计时器(例如少于十二个)
  • 在事件分配线程上运行ActionListener对象
  • 可以直接更新GUI,而无需使用EventQueue.invokeLater
  • 如果任务完全在事件分发线程中运行(也就是说,如果它没有产生工作线程),则仅当任务花费的时间不长(例如不到300毫秒)时,GUI才会保持响应状态。

java.util.Timer

  • 比javax.swing.Timer更具可扩展性,并具有其他计划功能
  • 在私有线程上运行TimerTask对象
  • 需要使用EventQueue.invokeLater来更新GUI

您可以通过两种方式使用Swing计时器

  • 延迟一次,一次执行一次任务。例如,工具提示管理器使用Swing计时器来确定何时显示工具提示以及何时隐藏工具提示。
  • 重复执行任务。例如,您可以执行动画或更新显示目标进度的组件。

这是上述信息的来源http://www.javapractices.com/topic/TopicAction.do?Id=160
和http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html

如果我想每隔Y秒简单地运行X,应该使用哪一个?

取决于您与之互动的内容。如果要与GUI交互,请使用

javax.swing.Timer
,否则请使用
java.util.Timer

这是否意味着如果我要构建GUI,则必须使用摆动版本的计时器?



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5426891.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存