>Java >Java베이스 >자바에서 스레드를 생성하는 방법

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

尚
원래의
2019-12-26 14:11:375516검색

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

Java는 Thread 클래스를 사용하여 스레드를 나타내며 모든 스레드 객체는 Thread 클래스 또는 해당 하위 클래스의 인스턴스여야 합니다. Java는 다음과 같이 세 가지 방법으로 스레드를 생성할 수 있습니다.

1) Thread 클래스를 상속하여 스레드 생성

2) Runnable 인터페이스를 구현하여 스레드 생성

# 🎜 🎜#3) Callable과 Future를 사용하여 스레드 생성

스레드를 생성하는 세 가지 방법을 각각 살펴보겠습니다.

Thread 클래스를 상속받아 스레드를 생성하는 단계는 다음과 같습니다.

1】d Thread 클래스의 하위 클래스를 정의하고 run() 메소드를 다시 작성하면 이 메소드의 메소드 본문은 스레드가 완료해야 하는 작업이며 run() 메소드를 스레드 실행 본문이라고도 합니다.

2] Thread 하위 클래스의 인스턴스 생성, 즉 스레드 객체 생성

3] 스레드를 시작합니다. 즉, 스레드의 start() 메서드를 호출합니다. 스레드

#🎜 🎜#예:

public class MyThread extends Thread{//继承Thread类
  public void run(){
  //重写run方法
  }
}
public class Main {
  public static void main(String[] args){
    new MyThread().start();//创建并启动线程
  }
}

스레드를 생성하기 위해 Runnable 인터페이스를 구현하는 단계는 다음과 같습니다.

#🎜🎜 #1】Runnable 인터페이스의 구현 클래스를 정의하고 run() 메서드도 다시 작성해야 합니다. 이 run() 메서드는 #🎜 🎜#2】Runnable 구현 클래스의 인스턴스를 생성하고 이 인스턴스를 Thread 대상으로 사용하여 Thread 개체를 생성합니다. 이 Thread 개체는 실제 스레드 개체입니다.

3] 세 번째 부분은 여전히 ​​스레드를 시작합니다. 스레드 개체의 start() 메서드를 호출하여

#🎜🎜 #예:

public class MyThread2 implements Runnable {//实现Runnable接口
  public void run(){
  //重写run方法
  }
}
public class Main {
  public static void main(String[] args){
    //创建并启动线程
    MyThread2 myThread=new MyThread2();
    Thread thread=new Thread(myThread);
    thread().start();
    //或者    new Thread(new MyThread2()).start();
  }
}

Callable 및 Future를 사용하여 스레드를 만드는 단계는 다음과 같습니다. #🎜 🎜#

1】Callable 인터페이스의 구현 클래스를 생성하고 call( ) 메서드를 구현한 후 구현 클래스의 인스턴스를 생성합니다. (java8부터는 Lambda 표현식을 직접 사용하여 Callable을 생성할 수 있습니다. 사물).

2】 FutureTask 클래스를 사용하여 Callable 객체를 래핑합니다. FutureTask 객체는 Callable 객체의 call() 메서드 반환 값을 캡슐화합니다. 3】 FutureTask 객체를 Thread 객체로 합니다. (FutureTask는 Runnable 인터페이스를 구현하기 때문에) 대상은 스레드를 생성하고 시작합니다.

4] 실행 후 반환 값을 얻기 위해 FutureTask 객체의 get() 메서드를 호출합니다. 하위 스레드 끝

예:

public class Main {
  public static void main(String[] args){
   MyThread3 th=new MyThread3();
   //使用Lambda表达式创建Callable对象
     //使用FutureTask类来包装Callable对象
   FutureTask<Integer> future=new FutureTask<Integer>(
    (Callable<Integer>)()->{
      return 5;
    }
    );
   new Thread(task,"有返回值的线程").start();//实质上还是以Callable对象来创建并启动线程
    try{
    System.out.println("子线程的返回值:"+future.get());//get()方法会阻塞,直到子线程执行结束才返回
    }catch(Exception e){
    ex.printStackTrace();
   }
  }
}

자바에 대한 자세한 내용은

javaBasic Tutorial

열을 참고하세요.

위 내용은 자바에서 스레드를 생성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.