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(); } }
위 코드에서 두 스레드는 동시에 동기화된 블록에 진입하려고 합니다. 잠금이 공유되기 때문에 두 번째 스레드가 블로킹에 진입하게 됩니다. 첫 번째 스레드가 실행을 완료하고 잠금을 해제할 때까지 상태입니다.
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(); } } }
위 코드에서 스레드가 대기 상태에 들어간 후 메인 스레드는 inform() 메서드를 통해 스레드를 깨웁니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!