Java java지도 시간 Java 스레드 생성 및 시작

Java 스레드 생성 및 시작

Feb 28, 2017 am 10:29 AM

Java 스레드는 다른 객체와 유사한 객체 유형입니다. 스레드는 java.lang.Thread 클래스의 인스턴스이거나 이 클래스의 하위 클래스 인스턴스입니다. Java 스레드는 객체 유형일 뿐만 아니라 코드를 실행할 수도 있습니다.

스레드 생성 및 시작

스레드 생성은 다음과 같이 수행할 수 있습니다.

Thread thread = new Thread();
로그인 후 복사

Java 스레드를 시작하려면 , 당신은 다음과 같이 시작 메소드를 호출해야 합니다.

thread.start();
로그인 후 복사

이 예에서는 스레드가 실행할 코드를 지정하지 않습니다. 이 스레드는 시작된 후 즉시 중지됩니다.

이 스레드가 실행할 코드를 지정하는 방법에는 두 가지가 있습니다. 첫 번째 방법은 스레드의 하위 클래스를 만든 다음 run() 메서드를 재정의하는 것입니다. 두 번째 방법은 Runnable 인터페이스를 구현하는 객체를 Thread 생성자에 전달하는 것입니다. 두 가지 방법 모두 아래에 언급되어 있습니다.

스레드 하위 클래스

첫 번째 방법은 스레드가 실행할 코드를 지정하는 것입니다. 스레드의 하위 클래스를 생성하고 run() 메소드. 이 run() 메소드는 start() 메소드를 호출한 후 이 스레드에 의해 실행됩니다. 예는 다음과 같습니다.

public class MyThread extends Thread {

    public void run(){
       System.out.println("MyThread running");
    }
  }
로그인 후 복사

위 스레드를 생성하고 시작하려면 다음과 같이 할 수 있습니다.

 MyThread myThread = new MyThread();
  myTread.start();
로그인 후 복사


스레드가 시작되자마자 start() 메서드는 반품. run() 메소드가 끝날 때까지 기다리지 않습니다. 이 run() 메소드는 다른 CPU에 의해 실행됩니다. 이 run() 메소드가 실행되면 "MyThread running"이라는 텍스트 내용이 인쇄됩니다.

다음과 같이 스레드의 익명 하위 클래스를 만들 수도 있습니다.

Thread thread = new Thread(){
    public void run(){
      System.out.println("Thread Running");
    }
  }

  thread.start();
로그인 후 복사


이 예제의 결과는 위와 동일합니다.

실행 가능한 인터페이스 구현

스레드가 실행해야 하는 코드를 지정하는 두 번째 방법은 java.lang을 구현하는 스레드를 생성하는 것입니다. 클래스의 실행 가능한 인터페이스입니다. 이 Runnable 객체는 스레드에 의해 실행될 수 있습니다.

예는 다음과 같습니다.

public class MyRunnable implements Runnable {

    public void run(){
       System.out.println("MyRunnable running");
    }
  }
로그인 후 복사

스레드에서 run 메서드를 실행하려면 MyRunnable 인스턴스를 스레드 생성자에 전달해야 합니다. 예는 다음과 같습니다.

Thread thread = new Thread(new MyRunnable());
   thread.start();
로그인 후 복사

이 스레드가 시작되면 자체 run 메서드를 실행하는 대신 MyRunnable의 run 메서드를 호출합니다. 위의 예에서는 "MyRunnable running"이라는 텍스트를 인쇄합니다.

다음과 같이 익명 구현을 만들 수도 있습니다.


Runnable myRunnable = new Runnable(){

     public void run(){
        System.out.println("Runnable running");
     }
   }

   Thread thread = new Thread(myRunnable);
   thread.start();
로그인 후 복사


스레드를 상속하거나 인터페이스를 구현하시겠습니까?

두 가지 방법 중 어느 것이 가장 좋은지에 대한 규칙은 없습니다. 두 가지 방법 모두 작동합니다. 그러나 개인적으로는 Runnable 인터페이스를 구현하고 이 구현의 인스턴스를 Thread 인스턴스로 관리하는 것을 선호합니다. 스레드 풀에 의해 실행되는 Runnable 구현이 있는 경우 풀의 스레드가 자유로워질 때까지 Runnable 인스턴스를 대기열에 추가하는 것은 간단합니다. 이는 Thread 하위 클래스를 사용하여 달성하기가 약간 어렵습니다.

일반적으로 Runnable을 구현해야 할 뿐만 아니라 Thread의 하위 클래스도 구현해야 합니다. 예를 들어, Thread 하위 클래스를 생성하면 둘 이상의 Runnable을 실행할 수 있습니다. 이는 스레드 풀 구현의 일반적인 예입니다.

일반적인 함정: start() 대신 run() 호출

스레드를 생성하고 시작할 때 흔히 저지르는 실수는 Thread의 run 메소드는 다음과 같이 start 메소드를 대체합니다.

Thread newThread = new Thread(MyRunnable());
  newThread.run();  //should be start();
로그인 후 복사

우선 Runnable의 run 메소드도 예상대로 실행되기 때문에 아무것도 눈치채지 못할 수도 있습니다. 그러나 생성한 새 스레드에서는 실행되지 않습니다. 자신을 생성한 스레드를 대체한 스레드의 run 메서드가 실행됩니다. 즉, 위의 두 줄의 코드가 실행되는 스레드입니다. 새로 생성된 스레드 인스턴스의 run 메소드를 호출하려면 start 메소드를 호출해야 합니다.

스레드 이름

Java 스레드를 생성할 때 이름을 지정할 수 있습니다. 이 이름은 서로 다른 스레드를 구별하는 데 도움이 됩니다. 예를 들어 여러 스레드가 이 출력을 작성하는 경우 어떤 스레드가 어떤 텍스트를 썼는지 확인할 수 있습니다. 예는 다음과 같습니다.

Thread thread = new Thread("New Thread") {
      public void run(){
        System.out.println("run by: " + getName());
      }
   };


   thread.start();
   System.out.println(thread.getName());
로그인 후 복사


Thread 생성자에 전달된 문자 인수에 유의하세요. 이 문자열은 스레드의 이름입니다. 이 이름은 Thread의 getName 메소드를 통해 얻을 수 있습니다. Runnable 구현을 실행할 때 이름을 전달할 수도 있습니다. 예:

MyRunnable runnable = new MyRunnable();
   Thread thread = new Thread(runnable, "New Thread");

   thread.start();
   System.out.println(thread.getName());
로그인 후 복사


그러나 MyRunnable 클래스는 Thread 클래스의 하위 클래스가 아니기 때문에 이를 실행하는 스레드의 getName() 메서드에 액세스할 수 없습니다.

Thread.currentThread()

이 메서드는 현재 실행 중인 스레드의 Thread 인스턴스에 대한 참조를 반환합니다. 이 방법으로 코드 블록을 실행하는 스레드의 Thread 개체에 액세스할 수 있습니다. 예는 다음과 같습니다.

Thread thread = Thread.currentThread();
로그인 후 복사


Thread 개체에 대한 참조가 있으면 해당 개체에 대한 메서드를 호출할 수 있습니다. 예를 들어, 실행 중인 스레드의 이름을 얻을 수 있습니다.

String threadName = Thread.currentThread().getName();
로그인 후 복사


Java 스레드 인스턴스

这里有一个小的例子。首先它打印出来了正在执行的main方法的线程的名字。这个线程是被JVM分配的。然后启动了10个线程,以及给予他们所有作为名称(“”+i)的一个数字。每一个线程然后打印出名字,以及停止执行。

public class ThreadExample {

  public static void main(String[] args){
    System.out.println(Thread.currentThread().getName());
    for(int i=0; i<10; i++){
      new Thread("" + i){
        public void run(){
          System.out.println("Thread: " + getName() + " running");
        }
      }.start();
    }
  }
}
로그인 후 복사


注意,甚至如果线程是按顺序启动的(1,2,3等等)。他们可能也不会按顺序执行的,意味着线程1可能不是第一个打印出来的名字。这个就是为什么原则上线程是并行运行而不是顺序呢执行的原因了。这个JVM以及操作系统决定着线程执行的顺序。这个顺序每次在他们启动的时候都不会相同的。
以上就是创建以及启动一个Java线程的内容,更多相关内容请关注PHP中文网(www.php.cn)!


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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

응용 프로그램 시작 오류 0xc000012d 문제를 해결하는 방법 응용 프로그램 시작 오류 0xc000012d 문제를 해결하는 방법 Jan 02, 2024 pm 12:53 PM

친구의 컴퓨터에 특정 파일이 누락된 경우 오류 코드 0xc000012d가 발생하며 애플리케이션이 정상적으로 시작되지 않습니다. 실제로 해당 파일을 다시 다운로드하여 설치하면 쉽게 해결할 수 있습니다. 응용 프로그램을 정상적으로 시작할 수 없습니다. 0xc000012d: 1. 먼저 사용자는 ".netframework"를 다운로드해야 합니다. 2. 그런 다음 다운로드 주소를 찾아 컴퓨터에 다운로드합니다. 3. 그런 다음 바탕 화면을 두 번 클릭하여 실행을 시작합니다. 4. 설치가 완료되면 잘못된 프로그램 위치로 돌아가 프로그램을 다시 실행해 보세요.

컴퓨터 프롬프트 '재부팅 및 적절한 부팅 장치 선택'을 해결하는 방법 컴퓨터 프롬프트 '재부팅 및 적절한 부팅 장치 선택'을 해결하는 방법 Jan 15, 2024 pm 02:00 PM

시스템을 다시 설치하는 것이 완벽한 해결책은 아닐 수 있지만 다시 설치한 후 컴퓨터를 켜면 검은색 배경에 흰색 텍스트가 표시되고 재부팅하고 적절한 부팅 장치를 선택하라는 메시지가 표시됩니다. 무슨 일이 일어나고 있는 걸까요? 이러한 프롬프트는 일반적으로 부팅 오류로 인해 발생합니다. 모두를 돕기 위해 편집자가 해결책을 제시했습니다. 컴퓨터 사용이 점점 더 대중화되고 컴퓨터 오류가 점점 더 흔해지고 있습니다. 아니요, 최근 일부 사용자에게 컴퓨터를 켤 때 검은색 화면이 나타나고 재부팅하고 적절한 부팅 장치를 선택하라는 메시지가 표시되어 컴퓨터 시스템을 시작할 수 없습니다. 보통. 무슨 일이야? 어떻게 해결하나요? 사용자는 혼란스러워하고 다음으로 편집자가 따릅니다.

wps가 이 객체의 소스 애플리케이션을 시작할 수 없으면 어떻게 해야 합니까? wps가 이 객체의 소스 애플리케이션을 시작할 수 없으면 어떻게 해야 합니까? Mar 13, 2024 pm 09:13 PM

WPS는 문서, 양식, PPT 등 매우 널리 사용되는 사무용 소프트웨어이며 다중 터미널 동기화를 지원합니다. wps 편집 시 "이 개체에 대한 소스 응용 프로그램을 시작할 수 없습니다"라는 메시지가 나타나는 경우 어떻게 해결합니까? 이 문제는 링크나 파일을 열려고 하지만 해당 소스 응용 프로그램이 더 이상 존재하지 않거나 삭제되었기 때문에 발생할 수 있습니다. 1. WPS 소프트웨어 재설치: WPSOffice를 재설치하여 문제를 해결하고 최신 버전을 사용하고 있는지 확인하십시오. 2. 기본 프로그램 수동 변경: 기본 프로그램을 WPS로 변경해 보십시오. 열려는 파일을 마우스 오른쪽 버튼으로 클릭하고 "다음으로 열기"를 선택한 다음

Ubuntu 시작 검은 화면 문제에 대한 효과적인 솔루션 및 기술 Ubuntu 시작 검은 화면 문제에 대한 효과적인 솔루션 및 기술 Dec 29, 2023 am 10:30 AM

Ubuntu 시작 시 검은색 화면을 해결하는 실용적인 팁 및 방법 소개: Ubuntu는 널리 사용되는 Linux 운영 체제이지만 때로는 시작 프로세스 중에 검은색 화면 문제가 발생할 수 있습니다. 이 문제는 그래픽 카드 드라이버 문제, 소프트웨어 충돌, 시스템 오류 등 다양한 이유로 인해 발생할 수 있습니다. 이 기사에서는 시스템의 안정적인 작동을 보장하기 위해 Ubuntu 시작 시 검은색 화면 문제를 해결하는 데 도움이 되는 몇 가지 실용적인 팁과 방법을 소개합니다. 1. 그래픽 카드 드라이버를 업데이트하고 다시 설치하여 복구 모드로 들어갑니다. 시작하는 동안 Shift 키를 눌러 복구 모드로 들어갑니다.

Realme Phone에서 폴더를 만드는 방법은 무엇입니까? Realme Phone에서 폴더를 만드는 방법은 무엇입니까? Mar 23, 2024 pm 02:30 PM

제목: Realme Phone 초보자 가이드: Realme Phone에서 폴더를 만드는 방법은 무엇입니까? 현대 사회에서 휴대폰은 사람들의 삶에 없어서는 안 될 도구가 되었습니다. 인기 스마트폰 브랜드인 Realme Phone은 간단하고 실용적인 운영 체제로 사용자들에게 사랑을 받고 있습니다. Realme 휴대폰을 사용하는 과정에서 많은 사람들이 휴대폰에 있는 파일과 애플리케이션을 정리해야 하는 상황에 직면할 수 있는데, 폴더를 만드는 것이 효과적인 방법입니다. 이 기사에서는 사용자가 휴대폰 콘텐츠를 더 잘 관리할 수 있도록 Realme 휴대폰에서 폴더를 만드는 방법을 소개합니다. 아니요.

Apple 듀얼 시스템의 부팅 우선순위를 설정하는 방법 Apple 듀얼 시스템의 부팅 우선순위를 설정하는 방법 Feb 19, 2024 pm 06:49 PM

기술이 계속 발전함에 따라 다양한 운영 체제를 사용해야 하는 필요성이 점점 더 일반화되고 있습니다. Apple 사용자의 경우 때로는 macOS 및 Windows와 같이 하나의 장치에 두 가지 다른 운영 체제를 설치하고 사용해야 할 수도 있습니다. 이 경우 이중 시스템의 시작 순서를 설정하는 것이 특히 중요합니다. 이 문서에서는 장치를 켤 때 먼저 듀얼 시스템을 시작하도록 Apple 장치를 설정하는 방법을 소개합니다. 먼저, 두 운영 체제가 모두 Apple 장치에 성공적으로 설치되었는지 확인해야 합니다. 이 Apple에서는 BootCamp를 사용할 수 있습니다.

김프에서 픽셀 아트를 만드는 방법 김프에서 픽셀 아트를 만드는 방법 Feb 19, 2024 pm 03:24 PM

Windows에서 픽셀 아트 제작을 위해 김프를 사용하는 데 관심이 있다면 이 기사가 흥미로울 것입니다. GIMP는 무료 오픈 소스일 뿐만 아니라 사용자가 아름다운 이미지와 디자인을 쉽게 만들 수 있도록 도와주는 잘 알려진 그래픽 편집 소프트웨어입니다. 초보자와 전문 디자이너 모두에게 적합할 뿐만 아니라, 김프는 그리기와 창작을 위한 유일한 구성 요소로 픽셀을 활용하는 디지털 아트의 한 형태인 픽셀 아트를 만드는 데에도 사용할 수 있습니다. 김프에서 픽셀 아트를 만드는 방법 Windows PC에서 김프를 사용하여 픽셀 그림을 만드는 주요 단계는 다음과 같습니다. 김프를 다운로드하여 설치한 다음 응용 프로그램을 시작합니다. 새 이미지를 만듭니다. 너비와 높이의 크기를 조정합니다. 연필 도구를 선택합니다. 브러시 유형을 픽셀로 설정합니다. 설정

WallpaperEngine을 시작할 때 무엇을 선택해야 합니까? WallpaperEngine을 시작할 때 무엇을 선택해야 합니까? Mar 19, 2024 am 08:49 AM

wallpaperengine이 시작되면 4가지 옵션이 있습니다. 많은 사용자는 wallpaperengine을 시작할 때 무엇을 선택해야 할지 모릅니다. 일반적으로 wallpaperengine이 시작되면 첫 번째 옵션인 32비트 시작을 선택합니다. wallpaperengine을 시작할 때 무엇을 선택해야 합니까? 답변: 32비트로 시작하세요. 1. 일반적으로 wallpaperengine이 시작되면 첫 번째 항목인 32비트 시작을 선택합니다. 2. wallpaperengine이 시작되면 4가지 옵션이 있습니다: 32비트 시작, 64비트 시작. 3. 32비트 시작: 일반적으로 권장되는 옵션이며 대부분의 사용자에게 적합합니다. 4. 64비트 시작: 시스템이 64비트를 지원하는 경우 이 옵션을 선택할 수 있습니다.

See all articles