> Java> Java베이스> 본문

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

풀어 주다: 2019-12-26 14:11:37
원래의
5396명이 탐색했습니다.

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

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 future=new FutureTask(     (Callable)()->{       return 5;     }    );    new Thread(task,"有返回值的线程").start();//实质上还是以Callable对象来创建并启动线程    try{     System.out.println("子线程的返回值:"+future.get());//get()方法会阻塞,直到子线程执行结束才返回    }catch(Exception e){     ex.printStackTrace();    }   } }
로그인 후 복사

자바에 대한 자세한 내용은

javaBasic Tutorial

열을 참고하세요.

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!