第二次启动线程

问题描述:

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(); 

但我只看到了第一次调试,他从来没有后进入它。

在此先感谢

JavaDoc -

这是从来没有的法律,以启动一个线程不止一次。特别是,线程在完成执行后可能不会重新启动。

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

你需要做的是:

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

然后,当你想要启动它:

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

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

+0

我编辑了我的第一篇文章。在此先感谢 PS:我想使用Thread和Runnable中的函数,.isAlive对我来说非常有用。 – Shinao 2012-04-26 12:02:43

+0

我重新编辑了我的第一篇文章。我不使用线程t =新的线程(r),但t =新的线程(r),因为我在开始时定义它私人线程thread = new Thread();,否则我不知道我的线程isAlive时间,但我认为这不是问题,因为我使用新的线程()。感谢您的帮助 – Shinao 2012-04-26 13:08:51

+0

上帝我迟到了,忘了设置requestedToExit在虚假...谢谢 – Shinao 2012-04-26 14:40:11