자바 스레드에 대한 자세한 설명과 스레드와 프로세스의 차이점
1. 프로세스 및 스레드
각 프로세스에는 고유 한 메모리 공간이 있으며 응용 프로그램은 동시에 여러 프로세스를 시작할 수 있습니다. 예를 들어, IE 브라우저에서 IE 브라우저를 열면 프로세스를 시작하는 것과 같습니다.
스레드는 프로세스에서 실행 프로세스를 말하며 프로세스에는 여러 스레드가 포함될 수 있습니다.
각 프로세스는 독립 메모리 공간을 할당하기 위해 운영 체제가 필요하며 동일한 프로세스의 여러 스레드 가이 공간, 즉 공유 메모리 및 기타 리소스를 공유해야합니다.
java.exe가 호출 될 때마다 운영 체제는 Java 가상 기계 프로세스를 시작합니다. Java 가상 머신 프로세스가 시작되면 Java Virtual Machine은 기본 스레드를 생성하여 프로그램 입구 기본 메소드에서 실행되기 시작합니다.
Java 가상 머신이 스레드를 시작할 때마다 스레드 메소드 스택을 스레드에 할당하여 관련 정보 (예 : 로컬 변수 등)를 저장하고 스레드 가이 스택에서 실행됩니다. 따라서 Java 객체의 로컬 변수는 스레드 안전이지만 인스턴스 변수 및 클래스 변수는 스택에 저장되지 않으므로 스레드 안전이 아닙니다.
프로세스의 세 가지 상태, 즉 준비, 실행 및 차단 상태가 있습니다.
2. 스레드 생성 방법
실행 가능한 방법 : (이 방법은 유연하고 권장됩니다)
Public Class Thread02는 runnable {public static void main (string [] args) {runnable r = new <strong> thread02 </strong> (); 스레드 t1 = 새 스레드 (<strong> r </strong>, "t1"); /*** 스레드 소스 코드* 공개 스레드 (runnable target, String name) {init (null, target, name, 0); } */ 스레드 t2 = 새 스레드 (r, "t2"); t1.start (); // Ready State에서 STREOD T1을 시작하여 CPU T2.Start ()를 기다리고 있습니다. // Ready State에서 STREOD T2를 시작하여 CPU T1.RUN ()을 기다립니다. // 메인 스레드 메인은 Object T1의 실행 메소드를 호출합니다} public void run () {System.out.println ( "스레드 이름은" + thread.currentThread (). getName ()); }}작업 결과는 다음과 같습니다.
스레드의 이름은 t1thread의 이름입니다. Mainthread의 이름은 t2입니다.
헤드 웨이
공개 클래스 스레드 03은 스레드 {public static void main (string [] args) {Thread03 t1 = new <strong> 스레드 03 </strong> (); // 스레드 t1 = 새 스레드 ()로 씁니다. 참고 : 스레드 03은이 시점에서 스레드입니다. t1.start (); } public void run () {system.out.println ( "스레드 이름은" + thread.currentThread (). getName ()); }}실행 결과 : 스레드 이름은 스레드 -0입니다
참고 : 맞춤형 스레드 외에도 프로그램이 실행될 때마다 기본 스레드도 있습니다.
포괄적인:
공개 클래스 스레드 01 {public static void main (string [] args) {스레드 스레드 = 새 스레드 (); thread.start (); // 실제로 작동하는 것은 run ()/run에서 실행됩니다. }} 따라서 자신이 만든 스레드는 실행 메소드를 다시 작성하고 run ()에 실행하도록해야하므로 인터페이스 또는 상속을 구현 한 다음 하위 클래스를 구현 한 다음 스레드 1 스레드 하위 클래스 메소드를 생성하는 방법 (상속) 스레드 스레드 1 = 새 스레드 () {public void run () {true (true) {true (500); (InterruptedException e) {e.printstacktrace (); } //thread.currentThread ()는 현재 스레드 System.out.println을 가져옵니다. }}}}; // thread1.start (); // 스레드를 쓰지 않고 시작할 수 없음 // 스레드 2 런닝 가능한 메소드 (구현) 스레드를 작성하는 방법 (구현) 스레드를 사용하는 것이 좋습니다. "+thread.currentThread (). getName ());}}); // Thread2.Start (); // 스레드 새 스레드 (new Runnable () {public void run () {system.out.println ( "runnable"+thread.currentThread (). getName ());}}) {public void run () {// 실행 방법이 실행되지 않도록 시스템이 실행되지 않도록합니다. "+스레드 .currentThread (). getName ()); } }.시작(); } /****단일 CPU에서 멀티 스레딩 실행은 한 사람이 다른 장소에서 똑같은 일을하는 대신 실행 효율성을 줄일 가능성이 매우 높습니다* /}읽어 주셔서 감사합니다. 도움이되기를 바랍니다. 이 사이트를 지원 해주셔서 감사합니다!