logo

자바 스레드 | Java에서 스레드를 생성하는 방법

스레드를 생성하는 방법에는 두 가지가 있습니다.

  1. Thread 클래스를 확장하여
  2. Runnable 인터페이스를 구현함으로써.

스레드 클래스:

Thread 클래스는 스레드에서 작업을 생성하고 수행하기 위한 생성자와 메서드를 제공합니다. Thread 클래스는 Object 클래스를 확장하고 Runnable 인터페이스를 구현합니다.

Thread 클래스의 일반적으로 사용되는 생성자:

  • 실()
  • 스레드(문자열 이름)
  • 스레드(실행 가능 r)
  • Thread(실행 가능 r,문자열 이름)

Thread 클래스의 일반적으로 사용되는 메소드:

    공개 무효 실행():스레드에 대한 작업을 수행하는 데 사용됩니다.공개 무효 시작():스레드 실행을 시작합니다. JVM은 스레드에서 run() 메서드를 호출합니다.공개 무효 수면(긴 밀리초):현재 실행 중인 스레드를 지정된 밀리초 동안 휴면 상태(일시적으로 실행 중지)로 만듭니다.공개 무효 조인():스레드가 죽을 때까지 기다립니다.공개 무효 조인(긴 밀리초):지정된 밀리초 동안 스레드가 죽을 때까지 기다립니다.공개 int getPriority():스레드의 우선순위를 반환합니다.공개 int setPriority(int 우선순위):스레드의 우선순위를 변경합니다.공개 문자열 getName():스레드의 이름을 반환합니다.공개 무효 setName(문자열 이름):스레드의 이름을 변경합니다.공용 스레드 currentThread():현재 실행 중인 스레드의 참조를 반환합니다.공개 int getId():스레드의 ID를 반환합니다.공개 Thread.State getState():스레드의 상태를 반환합니다.공개 부울 isAlive():스레드가 살아 있는지 테스트합니다.공개 무효 수익률():현재 실행 중인 스레드 개체를 일시적으로 일시 중지하고 다른 스레드가 실행되도록 허용합니다.공개 무효 정지():스레드를 일시 중단하는 데 사용됩니다(사용되지 않음).공개 무효 이력서():일시 중단된 스레드를 재개하는 데 사용됩니다(사용되지 않음).공개 무효 정지():스레드를 중지하는 데 사용됩니다(사용되지 않음).공개 부울 isDaemon():스레드가 데몬 스레드인지 테스트합니다.공개 무효 setDaemon(부울 b):스레드를 데몬 또는 사용자 스레드로 표시합니다.공개 무효 인터럽트():스레드를 중단합니다.공개 부울 isInterrupted():스레드가 중단되었는지 테스트합니다.공개 정적 부울 중단됨():현재 스레드가 중단되었는지 테스트합니다.

실행 가능한 인터페이스:

Runnable 인터페이스는 인스턴스가 스레드에 의해 실행되도록 의도된 모든 클래스에 의해 구현되어야 합니다. 실행 가능한 인터페이스에는 run()이라는 메서드가 하나만 있습니다.

의사코드 자바
    공개 무효 실행():스레드에 대한 작업을 수행하는 데 사용됩니다.

스레드 시작하기:

그만큼 시작() 메서드 Thread 클래스는 새로 생성된 스레드를 시작하는 데 사용됩니다. 다음 작업을 수행합니다.

  • 새 스레드가 시작됩니다(새 호출 스택 포함).
  • 스레드가 New 상태에서 Runnable 상태로 이동합니다.
  • 스레드가 실행될 기회를 얻으면 해당 스레드의 대상 run() 메서드가 실행됩니다.

1) Thread 클래스를 확장한 Java Thread 예제

파일 이름: Multi.java

 class Multi extends Thread{ public void run(){ System.out.println('thread is running...'); } public static void main(String args[]){ Multi t1=new Multi(); t1.start(); } } 

산출:

 thread is running... 

2) Runnable 인터페이스를 구현한 Java Thread 예제

파일 이름: Multi3.java

 class Multi3 implements Runnable{ public void run(){ System.out.println('thread is running...'); } public static void main(String args[]){ Multi3 m1=new Multi3(); Thread t1 =new Thread(m1); // Using the constructor Thread(Runnable r) t1.start(); } } 

산출:

정수를 문자열로
 thread is running... 

Thread 클래스를 확장하지 않는 경우 클래스 개체는 스레드 개체로 처리되지 않습니다. 따라서 Thread 클래스 객체를 명시적으로 생성해야 합니다. 귀하의 클래스 run() 메소드가 실행될 수 있도록 Runnable을 구현하는 귀하의 클래스 객체를 전달하고 있습니다.

3) Thread 클래스 사용: Thread(문자열 이름)

위에 정의된 생성자를 사용하여 Thread 클래스를 직접 사용하여 새 스레드를 생성할 수 있습니다.

파일 이름: MyThread1.java

 public class MyThread1 { // Main method public static void main(String argvs[]) { // creating an object of the Thread class using the constructor Thread(String name) Thread t= new Thread('My first thread'); // the start() method moves the thread to the active state t.start(); // getting the thread name by invoking the getName() method String str = t.getName(); System.out.println(str); } } 

산출:

 My first thread 

4) Thread 클래스 사용: Thread(Runnable r, 문자열 이름)

다음 프로그램을 관찰하세요.

파일 이름: MyThread2.java

 public class MyThread2 implements Runnable { public void run() { System.out.println('Now the thread is running ...'); } // main method public static void main(String argvs[]) { // creating an object of the class MyThread2 Runnable r1 = new MyThread2(); // creating an object of the class Thread using Thread(Runnable r, String name) Thread th1 = new Thread(r1, 'My new thread'); // the start() method moves the thread to the active state th1.start(); // getting the thread name by invoking the getName() method String str = th1.getName(); System.out.println(str); } } 

산출:

데이터 구조에서 구조란 무엇인가
 My new thread Now the thread is running ...