먼저, 실행중인 Java 스레드의 각 단계의 실행 상태를 살펴보십시오.
스레드는 프로세스의 엔티티이며 시스템에 의해 독립적으로 예약되고 발송되는 기본 장치입니다. 스레드 자체는 시스템 리소스를 소유하지 않지만 작동 중에 필수적인 리소스 만 가지고 있습니다. 동일한 프로세스에 속하는 다른 스레드로 처리하십시오. 한 스레드는 다른 스레드를 생성하고 취소 할 수 있으며 동일한 프로세스의 여러 스레드를 동시에 실행할 수 있습니다. 스레드 간의 상호 제약으로 인해 스레드는 작동 중에 간헐적으로 나타납니다.
스레드를 도입하는 운영 체제에서 프로세스는 일반적으로 자원 할당을위한 기본 장치로 사용되며 스레드는 독립적 인 운영 및 독립적 인 스케줄링을위한 기본 장치로 사용됩니다. 스레드는 프로세스보다 작고 기본적으로 시스템 리소스를 소유하지 않기 때문에 스케줄링의 오버 헤드가 훨씬 작아서 시스템의 여러 프로그램 간의 동시 실행 정도를보다 효율적으로 개선하여 시스템 리소스 활용 및 처리량을 크게 향상시킬 수 있습니다.
스레드는 프로그램에서 단일 순차 제어 프로세스입니다. 단일 프로그램에서 여러 스레드를 동시에 실행하여 Multithreading이라는 다른 작업을 완료합니다.
멀티 스레딩은 주로 CPU 시간을 절약하고 사용하는 동안 컴퓨터의 메모리 리소스와 CPU를 사용해야합니다.
멀티 스레딩은 운영 효율성을 향상시키지 않고 시스템 효율성을 향상시키기 위해 리소스 사용 효율성을 향상시키는 여러 작업을 동시에 완료하는 것입니다. 여러 작업을 동시에 완료 해야하는 경우 스레드가 구현됩니다.
Java에서 멀티 스레딩을 구현하는 두 가지 방법이 있습니다
1. 스레드 클래스를 상속합니다
2. 런닝 가능한 인터페이스를 구현하십시오
이 두 가지 방법의 공통점은 무엇입니까?
어떤 방법을 사용하든 스레드 (스레드 서브 클래스 인 경우 스레드 자체를 사용)를 사용하여 스레드를 생성 한 다음 start () 메소드를 호출해야합니다.
두 방법의 차이점 :
1. 스레드 클래스 상속의 한 가지 단점은 단일 상속이며, 런닝 가능한 인터페이스를 구현하면 단점을 보충하고 여러 상속을 달성 할 수 있습니다.
2. 스레드 클래스를 상속받은 경우 런닝 가능한 인스턴스 객체를 생성하는 경우 여러 실행 가능한 인스턴스 객체를 생성 한 다음 여러 스레드를 생성하고 런닝 가능한 인터페이스를 구현해야합니다. 이 클래스 와이 인스턴스를 사용합니다. 즉, 리소스 공유가 실현됩니다
위의 두 지점을 기준으로 두 번째 방법을 사용하는 것이 좋습니다.
다음은 설명해야 할 예입니다
Program 1:
com.dr.runnable1; // 클래스는 스레드 클래스를 상속받습니다. /멀티 스레딩을 사용하려면 (int i = 0; i <10; i ++) {system.out.println (this.name+"--- -> run ,,, ");}}} public class demo1 {public static void main (String args []) {// 첫 번째 메소드 runble r1 = new Mythread ("Thread a "); runnable r2 = new Mythread (스레드 B ");"스레드 C "; t2.start (); Methods // Mythread MT1 = New Mythread ( "Thread A"); // Mythread MT2 = New Mythread ( "Thread B"); // Mythread MT3 = New Mythread ( "Thread C"); // mt1.start () ; // mt1.start (); // 스레드는 한 번만 시작할 수 있습니다.프로그램의 실행 결과는 다음과 같습니다.
이것은 스레드 클래스를 상속하는 것입니다. 첫 번째 메소드는 여러 실행 가능한 인스턴스 개체를 생성 한 다음 스레드를 사용하여 여러 스레드를 생성합니다.
두 번째 방법은이 클래스가 스레드 클래스를 물려 받았기 때문에 여러 스레드를 생성하는 데 직접 사용할 수 있다는 것입니다.
Program 2:
com.dr.runnable1; 클래스 Mythread1은 runnable {private int ticket = 10; for (int i = 0; i <500; i ++) {if (this.t icket> 0) {시스템. out .println ( "ticket ----->"+(this.ticket-)}} public class demo2 {public static void main (String args []) {mythread1 mt = new Mythread1 (); : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : (mt); t2.start ();프로그램 실행 결과 :
이 프로그램은 실행 가능성을 구현하고 인스턴스 객체 클래스를 생성 한 다음 스레드를 사용하여 여러 스레드를 생성합니다.