> Java > java지도 시간 > 멀티스레딩 - 스레드 생성

멀티스레딩 - 스레드 생성

王林
풀어 주다: 2019-08-22 16:04:27
앞으로
2691명이 탐색했습니다.

스레드 생성 방법

멀티 스레드를 구현하는 방법은 4가지가 있습니다. 다음으로 생성 방법에 대해 자세히 설명하겠습니다

1. run() 메서드를 재정의합니다.

2. Runnable 인터페이스를 구현한 다음 run() 메서드를 재정의합니다.

3. 호출 가능한 인터페이스를 구현한 다음

4. 나중에 더 복잡해지니까요)

참고: 스레드를 생성하는 데 어떤 메서드를 사용하든 상관없이 항상 Thread 클래스에서 제공하는 start() 메서드를 사용하여 스레드를 시작하세요.

1. Thread 클래스를 상속하고 실행 메서드를 재정의합니다.

class MyThread extends Thread {
    private String title;
    private int ticket = 20;
 
    public MyThread(String title) {
        this.title = title;
    }
 
    public void run() {  //放每个线程的子任务
        while (ticket > 0) {
            System.out.println("当前线程为"+title+",还剩下"+ticket--+"票");
        }
    }
}
 
public class ThreadTest {
    public static void main(String[] args) {
        MyThread myThread1 = new MyThread("黄牛A");
        MyThread myThread2 = new MyThread("黄牛B");
        MyThread myThread3 = new MyThread("黄牛C");
        myThread1.start();
        myThread2.start();
        myThread3.start();
    }
}
로그인 후 복사

2. Runnable 인터페이스를 구현하고 실행 메서드를 재정의합니다.

class MyRunnable implements Runnable{
    @Override
    public void run() {
      for(int i =0;i <10;i++){
          System.out.println(Thread.currentThread().getName()+"、i="+i);
      }
    }
}
public class RunnableTest {
    public static void main(String[] args) {
       Runnable runnable =new MyRunnable();      //向上转型
        new Thread(runnable,"线程A").start();    //设置线程名字
        new Thread(runnable).start();     //没有设置线程名字,则是系统默认从 Thread-(0,1,2...)
        Thread thread1 = new Thread(runnable);
        thread1.setName("线程B");        //调用setName()设置名字
        thread1.start();
    }
}
로그인 후 복사

다음은 스레드 이름을 만드는 세 가지 방법입니다. 1) 괄호 바로 뒤에 이름을 추가합니다

(2) setName()을 호출하여 이름을 설정합니다

(3) 이름을 설정하지 않으면 시스템의 기본값은 Thread-(0,1,2... .)


3. Callable 인터페이스를 구현하고 call 메소드를 재정의합니다.

class MyCallable implements Callable<String>{
    private int ticket =20;
    @Override
    public String call() throws Exception {
        while(ticket > 0){
            System.out.println(Thread.currentThread().getName()+"还剩下"+ticket--+"票");
        }
        return "票卖完了,再见";
    }
}
public class CallableTest {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        //产生Callable对象
        MyCallable myCallable = new MyCallable();
        //产生FutureTask对象
        FutureTask futureTask = new FutureTask(myCallable);
        Thread thread = new Thread(futureTask);
        thread.start();
        System.out.println(futureTask.get()); //接收Callable对象的返回值
    }
}
로그인 후 복사
1 먼저 Callable 객체를 생성합니다.

2 Thread를 생성하고 전달합니다. FutureTask 객체에서

4. Callable 인터페이스의 반환 값을 받습니다. Future

스레드를 생성하는 세 가지 방법 비교

1. Thread 클래스를 상속하는 것은 단일 상속의 한계가 있습니다. 상대적으로 말하면 Runnable 인터페이스를 구현하는 것이 더 유연하며 Thread 클래스 자체도 Runnable 인터페이스를 구현하여 실제 스레드 Class를 지원합니다2. Runnable 인터페이스를 구현하면 프로그램 공유 개념을 더 잘 실현할 수 있습니다

3. 반환 값이 필요할 때 사용됩니다

위 내용에 명백한 오류가 있는 경우 지적해 주시면 감사하겠습니다. 감사해요!

더 많은 관련 콘텐츠를 보려면 PHP 중국어 웹사이트를 방문하세요:

JAVA 비디오 튜토리얼

위 내용은 멀티스레딩 - 스레드 생성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿