>Java >java지도 시간 >Java에서 스레드를 생성하는 방법은 무엇입니까? Java에서 스레드를 생성하는 세 가지 방법

Java에서 스레드를 생성하는 방법은 무엇입니까? Java에서 스레드를 생성하는 세 가지 방법

不言
不言원래의
2018-09-25 15:49:144279검색

이 기사에서 제공하는 내용은 Java에서 스레드를 생성하는 방법이 무엇인지입니다. Java에서 스레드를 생성하는 세 가지 방법에는 특정 참고 가치가 있습니다. 도움이 필요한 친구가 참고할 수 있기를 바랍니다.

1. Thread 클래스 생성 상속

Thread를 상속하고 run()을 다시 작성하면 스레드가 run 메서드에서 작업을 실행합니다. 생성된 서브클래스는 start() 메서드를 호출하여 스레드 메서드를 실행할 수 있습니다.

Thread가 구현한 스레드 클래스를 상속함으로써 스레드 클래스의 인스턴스 변수를 여러 스레드 간에 공유할 수 없습니다. (다른 Thread 객체를 생성해야 하며 당연히 공유되지 않음)

예:

/**
 * 通过继承Thread实现线程
 */
public class ThreadTest extends Thread{
  
  private int i = 0 ;

    @Override
    public void run() {
        for(;i<50;i++){
            System.out.println(Thread.currentThread().getName() + " is running " + i );
        }
    }

    public static void main(String[] args) {
        for(int j=0;j<50;j++){if(j=20){
                new ThreadTest().start() ;
                new ThreadTest().start() ;
            }
        }
    }
}

2. Runnable 인터페이스를 통해 스레드 클래스를 생성합니다.

이 방법을 사용하려면 먼저 Runnable 인터페이스를 구현하기 위한 클래스를 정의하고 인터페이스 재작성 run() 메소드, 이 실행 메소드는 스레드 실행 본문입니다. 그런 다음 Thread 객체를 생성하기 위한 매개변수 대상으로 Runnable 구현 클래스의 객체를 생성합니다. 이 Thread 객체는 실제 스레드 객체입니다. Runnable 인터페이스를 구현하는 스레드 클래스는 서로 리소스를 공유합니다.

/**
 * 通过实现Runnable接口实现的线程类
 */
public class RunnableTest implements Runnable {
    private int i ;
    @Override
    public void run() {
        for(;ic28f4bb3389389acaf66ea5ac1c6daf5 task = new FutureTaskc0f559cc8d56b43654fcbe4aa9df7b4a((Callablec0f559cc8d56b43654fcbe4aa9df7b4a)()->{
           int i = 0 ;
           for(;i<100;i++){
               System.out.println(Thread.currentThread().getName() + "的循环变量i的值 :" + i);
           }
           return i;
        });
       for(int i=0;i<100;i++){
           System.out.println(Thread.currentThread().getName()+" 的循环变量i : + i");
           if(i==20){
               new Thread(task,"有返回值的线程").start();
           }
       }
       try{
           System.out.println("子线程返回值 : " + task.get());
        }catch (Exception e){
           e.printStackTrace();
        }
    }
}

Summary

위의 세 가지 방법을 통해 실제로는 클래스 상속과 인터페이스 구현이라는 두 가지 범주로 분류할 수 있습니다. 상속에 비해 인터페이스 구현은 더 유연할 수 있으며 Java의 단일 상속 메커니즘에 의해 제한되지 않습니다. 그리고 동일한 리소스를 멀티 스레드로 처리하는 데 적합한 인터페이스를 구현하여 리소스를 공유할 수 있습니다. 스레드 지식은 풍부하고 복잡하며 더 많은 세부 사항을 배우고 숙달해야 합니다.

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

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