java - Thread.sleep 暂停整个程序

标签 java multithreading sleep

我有一个带有按钮的主窗体,按下该按钮时,应该启动一个新的倒计时器线程。

这是按钮操作监听器中的代码:

 Counter c = new Counter(timeToFinish);

这是 Counter 类的代码:

class Counter implements Runnable {

        int waitingTime = 0;
        Thread myCounter = new Thread(this);

        public Counter(int waitingTime)
        {
            this.waitingTime = waitingTime;
            myCounter.run();
        }

        public void run(){

            //Start countdown:
            do  
            {

                waitingTime -= 1;

                try {

                    Thread.sleep(1000);
                    System.out.println(waitingTime);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            } while (waitingTime >= 0);

        }
    }

问题是,当我创建 Counter 类的新实例时,它会暂停整个程序,而不仅仅是该线程!问题一定出在“Thread.sleep”。

最佳答案

因为您直接调用run方法。

相反,您应该将其包装在一个线程中并启动该线程。

例如,替换

myCounter.run();

new Thread(this).start();

关于java - Thread.sleep 暂停整个程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6137762/

相关文章:

java - 如何让两个线程等待对方的结果?

java - 在 Java 中,如何在特定时间后(可靠地)从主线程中断线程?

python - 防止 OS X 使用 Python 进入休眠状态?

java - 如何从StringArray中获取ItemArray?

java - Launch4j重定向下载java版本

java - 关闭 ProgressDialog 时出错 - E/ViewRootImpl : sendUserActionEvent() mView == null

c++ - 如何在程序执行期间防止屏幕保护程序和 sleep ?

java.lang.IndexOutOfBoundsException : Invalid index 20, 大小为 20

快速生产者的 Java "Tiered Queue"实现,慢速消费者

子进程通过管道发送一个数字,然后等待