Java에서 스레드를 만드는 방법은 무엇입니까? | 자바의 멀티스레딩

게시 됨: 2020-12-29

이 기사에서는 Java의 스레딩을 살펴보고 스레딩을 가능하게 하는 메커니즘을 탐색합니다.

목차

자바에서 스레딩

Java의 스레딩 기능은 가벼운 하위 프로세스입니다. 가장 작은 처리 단위로 간주됩니다. 프로그램에서 멀티태스킹을 달성하는 수단입니다. 게임, 애니메이션 등을 할 때 유용한 기능입니다.

Java에는 스레드 및 다중 스레드 생성에 대한 내장 지원이 있습니다. 이것은 CPU 공간을 최적으로 활용하여 비효율성과 러깅을 최소화하는 영리한 접근 방식입니다. Java에서는 다음 두 가지 방법으로 이 작업을 수행할 수 있습니다.

  1. 스레드 클래스 확장 또는
  2. 실행 가능한 인터페이스 구현

하나 이상의 스레드가 동시에 실행되는 경우를 멀티스레딩이라고 합니다. 이것은 본질적으로 프로그램의 여러 부분이 동시에 실행되도록 허용하며, 스레드의 각 부분과 각 스레드는 고유한 실행 경로를 따릅니다.

스레드는 공유 메모리 공간을 활용합니다. 메모리가 각 부분에 할당되지 않아 CPU 사용량이 최대화됩니다. 또한 컨텍스트를 변경하는 데 많은 시간이 걸리지 않습니다. 그러나 스레드가 너무 많으면 CPU가 컨텍스트 전환에 관여하고 실행이 지연될 수 있습니다.

스레드는 다음 6개 상태 중 하나에 존재할 수 있습니다.

  1. NEW – 쓰레드가 생성되자마자 새로운 상태로 존재한다. 본질적으로 스레드가 아직 실행을 시작하지 않았음을 의미합니다.
  2. RUNNING – 스레드가 실행 중이거나 실행 라인에 있을 때 실행 중인 상태입니다.
  3. WAITING – 실행 중인 스레드가 다른 활동이 발생하도록 하기 위해 때때로 중단되거나 일시 중단됩니다. wait() 또는 join()의 비 타임아웃 버전은 스레드 실행을 일시 중단할 수 있습니다. 작업이 발생하면 일시 중단된 스레드가 다시 시작됩니다.
  4. TIMED-WAITING – 실행 중인 스레드가 특정 기간 동안 일시적으로 중지되거나 일시 중단되는 경우가 있습니다. 예를 들어 sleep() 함수가 호출될 때.
  5. BLOCKED – 일시 중단된 Java 스레드가 특정 리소스를 획득할 수 없는 경우 차단되고 차단된 상태로 존재합니다.
  6. TERMINATED – 스레드가 실행을 완료하면 종료된 상태로 존재합니다. 그러나 스레드는 언제든지 종료할 수 있습니다.

Java 아키텍처 및 구성 요소에 대해 자세히 알아보십시오.

Java에서 스레드 생성의 이점

스레드를 생성하면 몇 가지 이점이 있습니다. 이들 중 일부는

  1. 스레드는 독립적이기 때문에 공유 메모리 공간에서 작동하더라도 한 실행이 다른 실행에 영향을 미치지 않습니다. 이는 또한 동시에 둘 이상의 작업을 수행할 수 있음을 의미합니다.
  2. 스레딩은 멀티태스킹의 한 형태이며 시간을 절약합니다.
  3. 한 스레드의 오류는 다른 스레드에 영향을 주지 않습니다.

Java에서 스레드를 만드는 방법은 무엇입니까?

위에서 논의한 바와 같이 이를 수행하는 두 가지 방법이 있습니다. 스레드 클래스 확장 또는 실행 가능한 인터페이스 구현

스레드 클래스

Thread 클래스에는 작업을 수행하고 스레드를 관리하고 추적할 수 있는 생성자와 메서드가 있습니다. Object 클래스를 확장한 다음 동반자 Runnable 인터페이스를 구현합니다. 쓰레드 클래스에 존재하는 생성자는 :Thread(), Thread(String name), Thread(Runnable r), Thread(Runnable r, String name)이다.

다음은 방법 및 설명입니다.

방법 무엇에 사용됩니까?
시작() 실행 시작
운영() 스레드에 대한 작업을 실행하려면
자다() 스레드를 지정된 기간 동안 절전 모드로 전환합니다.
가입하다() 다른 스레드가 종료될 때까지 대기
getPriority() 주어진 스레드의 우선 순위를 표시하려면
setPriority() 주어진 스레드의 우선 순위를 변경하려면
getName() 지정된 스레드의 이름을 반환하려면
세트명() 지정된 스레드의 이름을 변경하려면
getId() 주어진 스레드의 ID를 반환하려면
살아있다() 스레드가 다른 상태에 여전히 존재하는지 테스트하려면
생산하다() 다른 스레드가 실행될 수 있도록 스레드 개체 실행을 일시 중지합니다.
유예하다() 주어진 스레드를 일시 중단하려면
이력서() 일시 중단된 상태에서 스레드를 재개하려면
멈추다() 주어진 스레드를 중지하려면
파괴하다() 스레드 그룹 및 하위 그룹을 파괴하려면
방해하다() 스레드 실행을 중단시키려면
중단됨() 주어진 스레드 실행이 중단되었는지 테스트하려면
중단 된() 현재 스레드 실행이 중단되었는지 테스트하려면
활성 카운트() 스레드 그룹의 활성 스레드 수를 반환하려면
홀드락() 현재 스레드가 지정된 개체에 대한 모니터 잠금을 유지하는 경우에만 true를 반환합니다.
getState() 주어진 스레드의 상태를 확인하려면
setContextClassLoader() 컨텍스트 ClassLoader를 설정하려면
getContextClassLoader() 컨텍스트 ClassLoader를 반환하려면

Thread 클래스를 확장하여 쓰레드를 생성하기 위해서는 먼저 java.lang.Thread 클래스를 확장하는 클래스를 생성해야 한다. 이 클래스는 run() 메서드를 재정의하도록 정의됩니다. 다음으로, 스레드 실행을 시작하기 위해 start() 메서드를 호출하여 뒤따르는 새 클래스에 객체가 생성됩니다.

반드시 읽어야 할 것: 체크아웃해야 하는 Java의 패턴 프로그램

실행 가능한 인터페이스

이것은 스레드를 생성하는 가장 쉬운 방법입니다. Runnable Interface를 구현하려면 단 하나의 메소드가 필요합니다: run()

선언하기 위해 다음과 같이 씁니다.

공개 무효 실행()

run() 내부에서 새 스레드를 생성하는 코드를 작성합니다.

세계 최고의 대학 에서 소프트웨어 엔지니어링 과정 에 등록하십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

스레드 클래스 대 실행 가능한 인터페이스

스레드 클래스는 다른 클래스를 확장하는 것을 방지합니다. Java에서는 다중 상속이 불가능하기 때문입니다. 그러나 다른 클래스를 계속 확장하는 Runnable 인터페이스를 구현하는 경우에는 그렇지 않습니다.

Thread 클래스를 확장하면 스레드의 기능을 향상시키는 몇 가지 중요한 메서드에 액세스할 수 있습니다. 예를 들어, yield(), stop(), isalive(), interrupt(). Runnable 인터페이스에는 다소 제한적인 방법만 있습니다.

마무리

Java, 전체 스택 소프트웨어 개발에 대해 자세히 알아보려면 작업 전문가를 위해 설계되었으며 9+ 시간의 엄격한 교육을 제공하는 upGrad & IIIT-B의 전체 스택 소프트웨어 개발 Executive PG 프로그램을 확인하십시오. 프로젝트 및 과제, IIIT-B 동문 상태, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

당신의 꿈의 직업에 착륙

지금 소프트웨어 공학 석사 지원