>Java >Java베이스 >Java 멀티스레딩을 구현하는 방법

Java 멀티스레딩을 구현하는 방법

angryTom
angryTom원래의
2019-11-11 13:55:323618검색

Java 멀티스레딩을 구현하는 방법

Java 멀티스레딩 구현 방법

Java 멀티스레딩은 Java의 고급 기능 중 하나입니다. 멀티스레딩을 통해 멀티태스킹과 협업 작업을 동시에 수행할 수 있습니다. 그러나 Java 멀티스레딩은 여전히 ​​주의해서 사용해야 합니다. 우선, Java 멀티스레딩은 높은 코딩 기술을 요구합니다. 부적절하게 사용하면 프로그램 오류가 발생하고 스레드 간에 교착 상태가 발생합니다. 프로그램이 정지되는 원인이 됩니다. 둘째, 멀티스레딩을 남용하면 일부 주요 매개변수가 혼란스러울 수 있습니다. 이 경우 스레드 간 동기화 및 잠금 관리가 필요합니다. 셋째, 스레드 전환은 추가 비용이 발생하는데, 이를 흔히 '컨텍스트 전환'이라고 부르는데, 잘못 사용하면 효율성이 향상되지 않을 뿐만 아니라 효율성이 급격히 떨어지게 됩니다. (추천 튜토리얼: java 튜토리얼)

1. 멀티 스레딩을 구현하기 위한 상속 스레드

Java는 상속된 후 실행 메소드를 재정의할 수 있는 슈퍼 클래스를 제공합니다. 멀티스레딩을 구현하는 경우 구체적인 코드는 다음과 같습니다.

import java.io.*;
 
public class MyThread extends Thread{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }
 
    public static void main(String[] args) throws IOException {
        Thread t1 = new MyThread();
        Thread t2 = new MyThread();
        t1.start();
        t2.start();
    }
}

2. Runnable 인터페이스를 구현하여

일부 클래스의 경우 스레드를 상속하여 멀티스레딩을 구현할 수 없습니다. Java에서는 하나의 슈퍼 클래스만 가능하다고 규정하기 때문입니다. 동시에 상속될 수 있지만 동시에 여러 인터페이스를 구현할 수 있으므로 Runnable이 더욱 인기가 있습니다. 구체적인 코드는 다음과 같습니다.

import java.io.*;
 
public class MyThread implements Runnable{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }
 
    public static void main(String[] args) throws IOException {
        Thread t1 = new Thread(new MyThread());
        Thread t2 = new Thread(new MyThread());
        t1.start();
        t2.start();
    }
}

위에서는 Runnable 메서드를 구현하기 위해 클래스를 직접 정의합니다. 실제로 다음과 같이 익명의 내부 클래스 메서드로 수정하여 Thread를 생성할 수도 있습니다. Callable A Thread

import java.io.*;
 
public class MyThread {
    public static void main(String[] args) throws IOException {
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getId());
            }
        });
 
        Thread t2 = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getId());
            }
        });
 
        t1.start();
        t2.start();
    }
}
를 통해 구현됨

위 내용은 Java 멀티스레딩을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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