Java スレッドのいくつかの状態とそれらがプログラム実行に及ぼす影響についての詳細な研究
Java では、スレッドはプログラムを独立して実行できる軽量の実行単位です。そして特定のタスクを実行します。スレッドのステータスは、スレッド実行のさまざまな段階を表します。スレッドのステータスを理解することは、マルチスレッド プログラムを作成し、プログラムのパフォーマンスを最適化するために非常に重要です。この記事では、Java スレッドのいくつかの状態とそれがプログラムの実行に与える影響について詳しく説明し、具体的なコード例を示します。
Java スレッドのいくつかの状態には、NEW (新規)、RUNNABLE (実行可能)、BLOCKED (ブロックされた)、WAITING (待機中)、TIMED_WAITING (時間指定待機)、および TERMINATED (終了) があります。
Thread thread = new Thread(() -> { System.out.println("Hello, World!"); });
Thread thread = new Thread(() -> { System.out.println("Hello, World!"); }); thread.start();
public class MyRunnable implements Runnable { private Object lock = new Object(); public void run() { synchronized(lock) { System.out.println("In synchronized block"); // 一些代码 } } public static void main(String[] args) { MyRunnable runnable = new MyRunnable(); Thread thread1 = new Thread(runnable); Thread thread2 = new Thread(runnable); thread1.start(); thread2.start(); } }
上記のコードでは、ロックが共有されているため、2 つのスレッドが同時に synchronized ブロックに入ろうとしています。 2 番目のスレッド 最初のスレッドが実行を完了してロックを解放するまで、ブロック状態になります。
public class MyThread extends Thread { public void run() { synchronized(this) { System.out.println("Waiting for next thread..."); try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Thread resumed."); } } public static void main(String[] args) { MyThread thread = new MyThread(); thread.start(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized(thread) { thread.notify(); } } }
上記のコードでは、スレッドが待機状態に入った後、メイン スレッドは、notify() メソッドを通じてスレッドを起動します。
public class MyThread extends Thread { public void run() { try { System.out.println("Thread sleeping..."); Thread.sleep(2000); System.out.println("Thread woke up."); } catch (InterruptedException e) { e.printStackTrace(); } } public static void main(String[] args) { MyThread thread = new MyThread(); thread.start(); } }
上記のコードでは、スレッドは sleep() メソッドを呼び出すことによってスケジュールされた待機状態に入り、待機状態になるまで 2 秒待機します。起きた。
要約すると、スレッドのステータスはプログラムの実行に重要な影響を与えます。さまざまな状態とその意味を理解することは、効率的なマルチスレッド プログラムを作成するために重要です。
参考資料:
以上がJava スレッドのいくつかの状態と、それらがプログラム実行に及ぼす影響についての詳細な研究の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。