Java 스레드란 무엇인가요?
Java의 스레드는 java.lang.Thread 클래스의 인스턴스 또는 스레드 실행을 나타냅니다. java.lang.Thread 또는 java.lang.Runnable 인터페이스를 사용하여 새 스레드를 정의, 인스턴스화 및 시작하는 코드를 작성하십시오.
1. Process
프로세스는 메모리에서 실행되는 애플리케이션을 의미합니다. 각 프로세스는 하나의 프로세스에서 여러 스레드를 시작할 수 있습니다. 예를 들어 Windows 시스템에서 실행 중인 exe는 프로세스입니다.
2. 스레드
스레드는 프로세스 내의 실행 프로세스를 말하며, 프로세스는 여러 스레드를 실행할 수 있습니다. 예를 들어 java.exe 프로세스는 많은 스레드를 실행할 수 있습니다. 스레드는 항상 프로세스에 들어가며 프로세스의 여러 스레드는 프로세스의 메모리를 공유합니다.
추천 튜토리얼: java 튜토리얼
3. Java의 스레딩 모델
Java는 순수 객체 지향 언어이므로 Java의 스레딩 모델도 객체 지향입니다. Java는 Thread 클래스를 통해 스레드에 필요한 모든 기능을 캡슐화합니다. 스레드를 생성하려면 스레드 실행 함수가 있어야 합니다. 이 스레드 실행 함수는 Thread 클래스의 run 메소드에 해당합니다. Thread 클래스에는 Windows 스레드 생성 함수 CreateThread를 호출하는 것과 동일한 스레드 설정을 담당하는 시작 메서드도 있습니다. start 메소드가 호출될 때 스레드가 성공적으로 설정되면 Thread 클래스의 run 메소드가 자동으로 호출됩니다. 따라서 Thread를 상속받은 모든 Java 클래스는 Thread 클래스의 start 메소드를 통해 스레드를 생성할 수 있습니다. 자신만의 스레드 실행 함수를 실행하려면 Thread 클래스의 run 메서드를 재정의해야 합니다.
Java 스레드 모델의 Thread 클래스 외에도 Java 클래스를 스레드 클래스로 사용할 수 있는지 식별하는 Runnable 인터페이스도 있습니다. 이 인터페이스에는 스레드 실행 기능인 하나의 추상 메서드 실행만 있습니다. 자바 스레드 모델. 따라서 스레드 클래스에 대한 유일한 기준은 해당 클래스가 Runnable 인터페이스의 run 메소드를 구현하는지 여부입니다. 즉, 스레드 실행 기능이 있는 클래스는 스레드 클래스입니다.
위에서 볼 수 있듯이 Java에서 스레드를 생성하는 방법에는 두 가지가 있습니다. 하나는 Thread 클래스를 상속받는이고, 다른 하나는 Runnable 인터페이스를 구현하고 Thread와 해당 클래스를 통해 스레드를 생성하는 것입니다. 실제로 이 두 메서드는 본질적으로 동일한 메서드입니다. 즉, 둘 다 Thread 클래스를 통해 스레드를 생성하고 run 메서드를 실행합니다. 그러나 가장 큰 차이점은 스레드가 Thread 클래스를 상속하여 생성된다는 점입니다. Java는 다중 상속을 지원하지 않기 때문에 이 스레드 클래스가 Thread를 상속하면 다른 클래스를 상속할 수 없습니다. 필요한 경우 스레드 클래스가 Thread 클래스 대신 비즈니스 관련 클래스를 상속할 수 있도록 Runnable 인터페이스를 구현하여 스레드를 설정하는 메서드입니다.
● Java로 작성된 프로그램은 모두 JVM(Java Virtual Machine)에서 실행됩니다. JVM 내에서 프로그램의 멀티태스킹은 스레드를 통해 구현됩니다. java 명령으로 Java 애플리케이션을 시작할 때마다 JVM 프로세스가 시작됩니다. 동일한 JVM 프로세스에는 프로세스 자체가 하나만 있습니다. 이 JVM 환경에서는 모든 프로그램 코드가 스레드에서 실행됩니다.
● 일반적으로 일반적인 Java 애플리케이션은 단일 스레드입니다. 예를 들어, java 명령을 사용하여 가장 간단한 HelloWorld Java 애플리케이션을 실행하면 JVM 프로세스가 시작됩니다. JVM은 프로그램의 진입점인 main()을 찾은 다음 main() 메서드를 실행하여 스레드를 생성합니다. . 이 스레드를 메인 스레드라고 합니다. 메인 메소드가 종료되면 메인 스레드가 완료됩니다. JVM 프로세스도 즉시 종료됩니다.
위 내용은 자바 스레드는 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!