この記事では、Java でのスレッドの待機と起動に関する概要 (コード) を紹介します。必要な方は参考にしていただければ幸いです。
class ThreadA extends Thread{ public ThreadA(String name) { super(name); } public void run() { synchronized (this) { System.out.println(Thread.currentThread().getName()+" call notify()"); notify(); } } } public class WaitTest { public static void main(String[] args) { ThreadA t1 = new ThreadA("t1"); synchronized(t1) { try { // 启动“线程t1” System.out.println(Thread.currentThread().getName()+" start t1"); t1.start(); // 主线程等待t1通过notify()唤醒。 System.out.println(Thread.currentThread().getName()+" wait()"); t1.wait(); System.out.println(Thread.currentThread().getName()+" continue"); } catch (InterruptedException e) { e.printStackTrace(); } } } }
出力結果: main start t1 -> main wait() -> main continue
実際には、t1.start() が呼び出されたとき、t1 は準備完了状態になりますが、メイン メソッドでは、t1.wait() のときに、t1 がメイン スレッドによってロックされ、現在のスレッドを待機させると、実際にはメイン メソッドが実行されます。 t1 をロックした後、t1 スレッドが実行され、t1 call Notice() を出力し、メインスレッドを起動して、最後に終了します。
wait() との違いについて説明します。 sleep() の共通点は、スレッドをスリープさせることですが、wait() はオブジェクト同期ロックを解放しますが、sleep() は t1 が終了するまで実行されません。
うわー以上がJava でのスレッドの待機とウェイクアップの概要 (コード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。