Java 摆动计时器的问题

Java 摆动计时器的问题,java,swing,timer,Java,Swing,Timer,我有3个计时器在我的应用程序上运行,负责不同的操作。计时器1将处理应用程序的自动注销,计时器2处理表格更新,计时器3处理摆动按钮的颜色更新。第一个计时器使用基于变量及其值的计算,第二个和第三个计时器使用MYSQL查询 现在,当我在一台性能一般的机器上运行此应用程序时,应用程序没有移动。我需要等待几秒钟,才能正常单击或打开一个窗口。这和计时器有关吗?如果是,我是否有其他解决此计时器问题的建议?这些建议不应该与Swing计时器相关,这是代码中的其他内容。您需要调试应用程序以查看导致延迟的原因 这不应

我有3个计时器在我的应用程序上运行,负责不同的操作。计时器1将处理应用程序的自动注销,计时器2处理表格更新,计时器3处理摆动按钮的颜色更新。第一个计时器使用基于变量及其值的计算,第二个和第三个计时器使用MYSQL查询


现在,当我在一台性能一般的机器上运行此应用程序时,应用程序没有移动。我需要等待几秒钟,才能正常单击或打开一个窗口。这和计时器有关吗?如果是,我是否有其他解决此计时器问题的建议?

这些建议不应该与Swing计时器相关,这是代码中的其他内容。您需要调试应用程序以查看导致延迟的原因

这不应该与Swing计时器相关,这是代码中的其他内容。您需要调试应用程序以查看导致延迟的原因

据我所知,swing计时器在用于渲染的同一线程上触发事件,因此您不会因为错误的线程交互而出现异常-我过去在动画中使用过它们,没有问题-我怀疑答案在代码的其他地方。您是否尝试过在出现问题时分析代码?

据我所知,swing计时器在用于渲染的同一线程上触发事件,因此,您不会因为错误的线程交互操作而出现异常-我过去在动画中使用过它们,但没有问题-我怀疑答案在代码的其他地方。您是否尝试过在出现问题时分析代码?

如果计时器在启动时执行大量工作,则很可能是计时器。在长时间运行的任务中使用swing计时器通常不是一个好主意,因为它们会阻止EDT并冻结UI

以下是一些避免这种情况的建议:

  • 使用一个而不是摆动计时器。这将在后台线程上运行数据库代码,避免阻塞事件队列
  • 继续使用swing计时器,但让计时器操作只是启动一个来执行任务。如果操作需要一秒钟左右的时间才能执行,则可以通过后台处理将更新发布到UI

  • 问题不在于你有多少个计时器,而是每个计时器工作需要多长时间,因为计时器的
    actionPerformed
    方法是在swing事件线程上运行的,这意味着当计时器在做它的事情时,不会发生UI更新。

    如果计时器在启动时执行大量工作,那么很可能是计时器。在长时间运行的任务中使用swing计时器通常不是一个好主意,因为它们会阻止EDT并冻结UI

    以下是一些避免这种情况的建议:

  • 使用一个而不是摆动计时器。这将在后台线程上运行数据库代码,避免阻塞事件队列
  • 继续使用swing计时器,但让计时器操作只是启动一个来执行任务。如果操作需要一秒钟左右的时间才能执行,则可以通过后台处理将更新发布到UI
  • 问题不在于你有多少个计时器,而是每个计时器工作需要多长时间,因为计时器的
    actionPerformed
    方法是在swing事件线程上运行的,这意味着当计时器在做它的事情时,不会发生UI更新

    如果我同时运行5个计时器可以吗

    “使用单个共享线程执行等待”的所有实例。当胎面饱和时,会出现限制。实际上,每个处理器都可能有多个侦听器,但“处理程序必须快速执行以保持GUI的响应。”

    如果我同时运行5个计时器可以吗


    “使用单个共享线程执行等待”的所有实例。当胎面饱和时,会出现限制。实际上,每个处理器都可能有多个侦听器,但“处理程序必须快速执行以保持GUI响应。”

    那么,您确定计时器不会使应用程序冻结吗?应用程序将全天运行,并且一直处于繁忙状态。如果我同时运行5个计时器可以吗?你确定你需要这么多计时器吗。您可以在一个系统中使用相同的功能,如果必须,只需给它们不同的检查间隔?否则答案必须在代码中,让我们看看。@Deepak,如果你正在做的事情可能会阻碍EDT,那么你需要把它移开。要确认这一点,您需要配置您的应用程序。只要不在50个计时器上运行大任务,同时运行50个计时器就不是问题。@jzd:我已经附上了我的应用程序的分析细节的快照。我是新手,我不明白它在做什么。请帮帮我..@Deepak,连接在哪里?您需要做的是找出actionPreformed方法为每个计时器花费的时间。您可以将其存储在变量中并执行System.out.println()操作。找出它们是否需要花费大量时间运行。那么您确定计时器不会使应用程序冻结吗?应用程序将全天运行,并且一直处于繁忙状态。如果我同时运行5个计时器可以吗?你确定你需要这么多计时器吗。您可以在一个系统中使用相同的功能,如果必须,只需给它们不同的检查间隔?否则答案必须在代码中,让我们看看。@Deepak,如果你正在做的事情可能会阻碍EDT,那么你需要把它移开。要确认这一点,您需要配置您的应用程序。只要不在50个计时器上运行大任务,同时运行50个计时器就不是问题。@jzd:我已经附上了我的应用程序的分析细节的快照。我是新手,我不明白它在做什么。请帮帮我..@Deepak,附件