이 기사에서 제공하는 내용은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!