3

「Runnable」クラスのコードフラグメントは次のようなものです。

public void run() {
    //Do some stuff
    while(!someCondition){      
        //Do some stuff
        while(anotherCondition){
            try {
                Thread.sleep(60000);
            }catch (InterruptedException e){
                logger.error(e.getMessage());
                e.printStackTrace();
            }
            //Do some stuff
        }
        threadExecutor = Executors.newCachedThreadPool();
        RunnableClass rc = new RunnableClass();
        Thread rcThread = new Thread(rc);
        rcThread.setDefaultUncaughtExceptionHandler(new SomeUncaughtExHandler());
        threadExecutor.execute(rcThread);
    }
    //Do some stuff     
}

呼び出しThread.sleep(60000);により、すべての RunnableClass スレッドがスリープ状態になりますか?

4

6 に答える 6

6

Thread.sleep()現在のスレッドをスリープ状態にします。これはJavadocで詳しく説明されています。

現在実行中のスレッドを、指定されたミリ秒数だけスリープ (一時的に実行を停止) させます。これは、システム タイマーとスケジューラの精度と精度に依存します。スレッドは、どのモニターの所有権も失いません。

于 2013-02-28T09:22:12.490 に答える
1

Thread.sleep()現在のスレッドをスリープ状態にします。しかし、それは少し混乱しています。これが、今、その理由です。推奨される方法は、TimeUnitスリープメソッドを使用することです。このAPIはJavaSE5バージョンで追加されました。

  TimeUnit.SECONDS.sleep(5);

Javadoc:

Thread.sleepこのユニットを使用してを実行します。これは、時間引数をメソッドに必要な形式に変換する便利なThread.sleepメソッドです。

SECONDSまた、などのさまざまな単位を使用MILLISECONDSして、sleepメソッド内で渡される引数の単位に関する混乱を避けることができます。

于 2013-02-28T09:57:58.723 に答える
1

Thread.sleep()呼び出しスレッドをスリープ状態にするだけです。

于 2013-02-28T09:22:49.903 に答える
0

スレッド.スリープ(x)

現在のスレッドの実行'x' ms中断 (スリープ) させます。これは、アプリケーションの他のスレッドやシステム上の他のアプリケーションがプロセッサ時間を利用できるようにする効率的な手段です。

于 2013-02-28T09:30:24.730 に答える
0

マニュアルによると:

指定されたミリ秒数の間、現在実行中のスレッドをスリープ (実行を一時的に停止) させます。

いいえ、すべてのスレッドに影響するわけではありません。

于 2013-02-28T09:22:46.237 に答える
0

いいえ、現在のスレッドのみがスリープします。ドキュメントによると:

指定されたミリ秒数の間、現在実行中のスレッドをスリープ (実行を一時的に停止) させます。

于 2013-02-28T09:23:12.807 に答える