1

待機メソッドが実行されているときに知りたいスレッドがあります。そして、スレッドが実行されているとき

ここに私のコードがあります:

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

boolean(pause)変数をグローバルに設定しましたが、チェックすると

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

私のRunnableクラスからはうまくいかないようで、私の状態はうまくいきます。スレッドがいつ待機しているか、いつスレッドが実行されているかを確認するにはどうすればよいですか??

4

2 に答える 2

3

次のコードで、スレッドが生きているかどうかを確認します。

thread1.isAlive()

ブール値を返します。レシーバーが既に開始されていて、まだコードを実行している (まだ終了していない) 場合は true を返します。レシーバーがまだ開始されていない場合、または既に開始されて完了まで実行されて終了した場合は、false を返します。

于 2013-10-04T20:59:15.090 に答える
3

Thread.getState() メソッドを使用する

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

スレッドは、次のいずれかの状態になります。

NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED

于 2013-10-04T21:03:20.327 に答える