第二次启动一个线程

时间:2012-04-26 11:19:24

标签: java android

thread = new Thread()
        {
            @Override
            public void run() {
                while(!requestedToExit)
                {
                    SystemClock.sleep(3000);
                    Log.d("debug", "in");
                }
            }
        };

所以一个按钮有一个事件,每次我点击它都会启动线程(如果前一个线程没有活动)。

所以我尝试使用thread.start()但是它已经启动了线程。我试过.run(),没有任何反应,我每次点击按钮都会尝试,并且可以再次运行它,创建一个新线程并启动它:没有。

一些想法?


使用Runnable:

   r= new Runnable(){

            public void run() {
                while(!requestedToExit)
                {
                    Log.d("debug", "in");
                    SystemClock.sleep(3000);

                }
            }
        };

然后我在听众中使用:

thread = new Thread(injection);
thread.start();

但我只是第一次看到调试,他从未进入过调试。

提前致谢

1 个答案:

答案 0 :(得分:5)

来自JavaDoc -

  

不止一次启动线程永远不合法。特别是,a   一旦完成执行,线程可能无法重新启动。

相反,使用java.lang.Runnable并创建一个新线程以在必要时运行它。

您需要做的是:

Runnable r = new Runnable() {
    public void run() {
        ....
    }
};

然后,当你想要启动时:

Thread t = new Thread(r);
t.start();

您需要始终创建一个新线程来运行那个可运行的线程。