2013-10-04 53 views
1

我有一個線程,我想知道何時等待方法正在運行。當線程運行如何檢查線程是否正在運行或等待在Android

這裏是我的代碼:

runnableClass rc = new runnableClass(); 
    Object PauseTHR = new Object(); 
    boolean pause = false; 
    public class runnableClass implements Runnable { 
      @Override 
      public void run() { 
       while(true) { 
       // here is my code,after my code i want to wait thread 
       // so i call onpause(); 
        onpause(); 
        synchronized (PauseTHR) { 
         while(pause) { 
          Log.i("while loop", "it goes over me"); 
          try { 
           PauseTHR.wait(); 
          } catch (InterruptedException e) { 
           e.printStackTrace(); 
          } 
         } 
        } 
       } 
      } 

      public void onpause() { 
       synchronized (PauseTHR) { 
        Log.i("synchronized", "it goes over me"); 
        pause = true; 
       } 
      } 

      public void onresume() { 
       synchronized (PauseTHR) { 
        pause = false; 
        PauseTHR.notifyAll(); 
       } 
      } 
     } 

設置我的布爾(暫停)可變全球,但是當我檢查

if(pause == true) 
    rc.onresume(); 

了我的Runnable類的似乎不起作用,我的病情起作用 我該如何檢查我的線程何時等待,何時線程正在運行?

回答

3

檢查你的線程是活着還是沒有這樣的代碼:

thread1.isAlive() 

它返回一個布爾值。如果接收器已經啓動並仍然運行代碼(尚未死亡),則返回true。如果接收器還沒有啓動,或者它已經啓動並運行到完成並且死亡,則返回false。

+0

通過該方法返回的時間,信息是陳舊的。 –

3

使用Thread.getState()方法

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.State.html

一個線程可以是以下狀態之一:

NEW,RUNNABLE,阻塞,等待,TIMED_WAITING,封端

+0

該方法返回時,信息是陳舊的。 –

+0

是的,我想是的,因爲當我檢查線程與isAlive()或thread.getState()它不起作用,從你的角度來看我應該怎麼做,以找出當我的線程正在等待 –

+0

使用斷點和調試它看到他們回報。把這件事告訴我結果 –

相關問題