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

前端之家收集整理的这篇文章主要介绍了为什么Java中有两个Timer类(一个在javax.swing下,一个在java.util下)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我真的很困惑这个. Java有两个Timer类,一个在 swing以下,一个在 util下,为什么呢?如果我想每Y秒钟运行X,我应该使用哪一个?这是否意味着如果我正在构建一个GUI,我必须使用秋千版本的定时器?

谢谢!

解决方法

这是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=160http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html

Which one should I use if I want to simply run X every Y seconds?

取决于你正在进行的互动.如果您正在与GUI交互,那么使用javax.swing.Timer,否则使用java.util.Timer.

Does this mean if I’m building a GUI I have to use the swing version
for a timer?

原文链接:https://www.f2er.com/java/124303.html

猜你在找的Java相关文章