在Java中使用Swing GUI中的线程

Ali*_*sam 3 java swing multithreading

我使用以下代码,JLabel用相同的句子替换每0.5秒,但用另一个点.

    Runnable r1=new Runnable() {
        @Override
        public void run() {
            while(true){
                try {
                    connectionStatus.setText("Connection Established...");
                    Thread.sleep(500L);
                    connectionStatus.setText("Connection Established.");
                    Thread.sleep(500L);
                    connectionStatus.setText("Connection Established..");
                    Thread.sleep(500L);
                } catch (InterruptedException ex) {

                }
            }
        }
    };
Thread th1=new Thread(r1);
th1.start();
Run Code Online (Sandbox Code Playgroud)

这是使用线程的真正目的吗?这会影响程序的速度吗?如果我正在做的事情是如此愚蠢,还有其他方法来做这些愚蠢的事情吗?

GET*_*Tah 7

这是使用线程的真正目的吗?

如果您希望这些操作并行运行,那么答案是肯定的

有没有其他办法做这种愚蠢的事情?

如果你在一个固定的时间间隔更新您的标签,那么你或许应该去使用定时器!而非

在旁注:

  • 你应该避免while(true)在进行多线程时使用,你应该定义一个你在循环中测试的停止布尔值,或者Thread.interrupted()如果你扩展Thread类就使用
  • 从非EDT线程更新UI元素时,您应该使用 SwingUtilities.invokeLater