Java의 멀티스레딩 – 예제로 배우기
게시 됨: 2022-06-23Java는 다중 스레드 프로그램을 지원하는 프로그래밍 언어입니다. 다중 스레드 프로그램은 동시에 실행되는 둘 이상의 부분(스레드)을 수용하여 서로 다른 작업을 처리하여 최적의 CPU 사용을 가능하게 합니다. 멀티 스레딩은 멀티 태스킹의 확장입니다. 멀티 태스킹은 여러 프로세스가 중앙 처리 장치와 같은 공통 처리 리소스를 공유하는 기능으로 정의할 수 있습니다.
멀티스레딩은 정의된 작업을 더 작은 개별 스레드로 나눌 수 있는 다양한 애플리케이션으로 멀티태스킹 개념을 확장합니다.
이러한 각 스레드는 한 스레드의 예외가 다른 스레드의 성능에 영향을 미치지 않도록 다른 실행 경로에서 동시에 독립적으로 실행됩니다.
세계 최고의 대학에서 온라인으로 소프트웨어 개발 과정을 배우십시오. 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.
자바에서 멀티스레딩이란?
Java의 멀티스레딩은 CPU 시간을 최대화하기 위해 여러 스레드를 동시에 실행하는 것입니다.
스레드의 수명 주기
스레드는 수명 주기에서 서로 다른 단계를 가지고 있습니다. 그것들은 다음과 같습니다:
- 새로 만들기: 스레드가 새 스레드로 수명 주기를 시작합니다. 프로그램이 스레드를 실행할 때까지 이 새로운 단계에 남아 있습니다.
- 실행 가능: 태어난 스레드는 프로그램이 시작할 때 실행 가능 단계에 들어갑니다. 스레드는 이 단계에서 작업 실행을 시작합니다.
- Waiting: 이것은 스레드가 다른 스레드가 작업을 완료할 때까지 기다리는 전환 단계입니다. 대기 단계의 스레드는 다른 스레드로부터 신호를 받은 후 실행 가능한 단계로 전환합니다.
- Timed Waiting: 특정 시간 간격 동안 실행 가능한 스레드가 진입할 수 있는 단계입니다. 이 단계의 스레드는 특정 시간 간격이 끝나면 실행 가능한 단계로 다시 이동합니다.
- Dead: 스레드 수명 주기의 마지막 단계입니다. 스레드는 작업을 완료한 후 이 단계에 들어갑니다.
Java에서 멀티스레딩의 이점
- Java의 스레드는 독립적이므로 Java 멀티스레딩은 사용자를 차단하지 않으며 동시에 많은 작업을 수행할 수 있습니다.
- Java의 멀티스레딩은 여러 작업을 가능하게 하므로 시간을 절약하고 효율적입니다.
- 프로그램의 일부가 가로채더라도 계속 실행할 수 있습니다.
- 다중 프로세스를 사용하는 기존 병렬 프로그램에 대한 성능을 향상시킵니다.
- CPU 시간을 최대한 활용하는 효율적인 프로그램 생성.
- 복잡한 애플리케이션의 응답 시간을 크게 향상시킵니다.
- 기존 병렬 프로그램에 비해 더 적은 리소스가 필요합니다.
스레드 우선 순위
운영 체제는 스레드의 우선 순위에 따라 스레드의 실행 일정을 결정합니다. 스레드의 우선 순위는 상수 값에 따라 결정됩니다.
- 상수 1이 최소 우선순위를 갖습니다( MIN_PRIORITY).
- 상수 5는 일반 우선 순위를 얻습니다( NORM_PRIORITY).
- 상수 10은 최대 우선순위(MAX_PRIORITY)를 얻습니다.
소프트웨어 엔지니어링에 대한 인기 코스 및 기사
인기 프로그램 | |||
소프트웨어 개발의 이그 제 큐 티브 PG 프로그램 - IIIT B | 블록체인 인증 프로그램 - PURDUE | 사이버 보안 인증 프로그램 - PURDUE | 컴퓨터 과학 석사 - IIIT B |
기타 인기 기사 | |||
미국의 클라우드 엔지니어 급여 2021-22 | 미국의 AWS 솔루션 아키텍트 급여 | 미국의 백엔드 개발자 급여 | 미국의 프론트엔드 개발자 급여 |
미국 웹 개발자 급여 | 2022년 스크럼 마스터 인터뷰 질문 | 2022년 사이버 보안 분야에서 경력을 시작하는 방법은 무엇입니까? | 공학도를 위한 미국에서의 직업 선택 |
Java에서 스레드를 만드는 방법은 무엇입니까?
스레드는 Java에서 두 가지 방법으로 생성할 수 있습니다.
- 스레드 클래스 확장
- 실행 가능한 인터페이스 구현
스레드 클래스를 확장하여 스레드 생성
스레드 클래스의 몇 가지 메서드와 그 기능은 다음과 같습니다.
- getName() : 쓰레드의 이름을 얻기 위해
- getPriority(): 스레드의 우선 순위를 얻으려면
- is Alive(): 스레드가 실행 중인지 확인
- join(): 스레드가 종료될 때까지 기다립니다.
- run() : 쓰레드 진입점
- sleep(): 특정 시간 창 동안 스레드를 일시 중단합니다.
- start() : run() 메서드를 통해 스레드를 활성화합니다.
1단계 : 스레드 클래스에 제공된 run() 메서드를 재정의합니다. 이것은 스레드의 진입점 역할을 하며 전체 프로그램 논리가 4this로 둘러싸여 있어야 합니다.
run() 메서드의 구문은 다음과 같습니다.
공개 무효 실행( )
2단계: 구문이 void start( ) 인 start() 메서드로 스레드 개체를 시작합니다 .
다음은 Java의 멀티스레딩 프로그램의 예입니다.
예 1:
클래스 MultithreadingDemo는 스레드를 확장합니다.{
공개 무효 실행(){
System.out.println("내 스레드가 실행 중입니다.");
}
공개 정적 무효 메인(문자열 인수[]){
MultithreadingDemo obj=new MultithreadingDemo();
obj.start();
}
}
위 프로그램의 출력은 다음과 같습니다.
내 스레드가 실행 중입니다.
예 2:
클래스 Count는 스레드를 확장합니다.
{
세다()
{
super("내 스레드가 확장 중입니다");
System.out.println("내 스레드가 생성되었습니다." + this);
시작();
}
공개 무효 실행()
{
노력하다
{
(int i=0 ;i<10;i++)
{
System.out.println("카운트 출력" + i);
Thread.sleep(1000);
}
}
catch(InterruptedException e)
{
System.out.println("내 스레드가 중단되었습니다.");
}
System.out.println("내 스레드가 끝났습니다." );
}
}
클래스 ExtendingExample
{
공개 정적 무효 메인(문자열 인수[])
{
카운트 cnt = 새로운 Count();
노력하다
{
동안(cnt.isAlive())
{
System.out.println("메인 쓰레드는 자식 쓰레드가 살아있을 때까지 살아있습니다.");
Thread.sleep(1500);
}
}
catch(InterruptedException e)
{
System.out.println("메인 스레드가 중단되었습니다.");
}
System.out.println("메인 스레드의 실행이 종료되었습니다." );
}
}
위 프로그램의 출력은
내 스레드가 생성되었습니다Thread[my runnable thread,5,main]
메인 쓰레드는 자식 쓰레드가 살아있을 때까지 살아있을 것입니다.
카운트 0 인쇄
카운트 1 인쇄
메인 쓰레드는 자식 쓰레드가 살아있을 때까지 살아있을 것입니다.
카운트 인쇄 2
메인 쓰레드는 자식 쓰레드가 살아있을 때까지 살아있을 것입니다.
카운트 인쇄 3
카운트 인쇄하기 4
메인 쓰레드는 자식 쓰레드가 살아있을 때까지 살아있을 것입니다.
카운트 인쇄 5
메인 쓰레드는 자식 쓰레드가 살아있을 때까지 살아있을 것입니다.
카운트 인쇄 6
카운트 인쇄 7
메인 쓰레드는 자식 쓰레드가 살아있을 때까지 살아있을 것입니다.
카운트 인쇄 8
메인 쓰레드는 자식 쓰레드가 살아있을 때까지 살아있을 것입니다.
카운트 9 인쇄
내 스레드 실행이 종료되었습니다
메인 쓰레드 실행이 종료됨
실행 가능한 인터페이스를 구현하여 스레드 생성
이 방법을 사용하는 동안 따라야 할 세 가지 중요한 단계가 있습니다.
1단계 : run() 메서드는 실행 가능한 인터페이스로 구현되어야 합니다. 이 run() 메서드는 스레드의 진입점 역할을 하며 전체 프로그램 논리를 포함해야 합니다.
run() 메서드의 구문은 다음과 같습니다.
공개 무효 실행( )
2단계: 스레드 개체는 아래에 제공된 생성자를 사용하여 활성화해야 합니다.
Thread(실행 가능한 threadObj, 문자열 threadName);
여기서 threadObj는 실행 가능한 인터페이스를 구현하는 클래스 역할을 하며, 스레드 이름은 새 스레드에 지정된 이름입니다.
3단계: 스레드 개체를 생성한 후 run() 메서드를 실행하는 start() 메서드에서 스레드 개체를 시작할 수 있습니다.
start() 메서드의 구문은 다음과 같습니다.
무효 시작();
실행 가능한 인터페이스를 구현하여 스레드를 생성하는 예는 여기 에서 찾을 수 있습니다 .
Java 멀티스레딩 및 소프트웨어 개발에 대해 자세히 알아보려면 upGrad와 함께 IIIT Bangalore에서 제공하는 소프트웨어 개발의 Executive Post Graduate Program에 등록하는 것이 좋습니다.
소프트웨어 개발의 이그 제 큐 티브 PG 프로그램은 업계 관련 사례 연구 및 프로젝트를 통해 일하는 전문가가 경력에서 큰 도약을 할 수 있도록 설계된 13 개월 온라인 프로그램입니다. 이 프로그램에는 후보자가 더 잘 배울 수 있도록 업계 전문가가 제공하는 10개 이상의 라이브 세션도 포함됩니다.
이 프로그램에는 후보자가 실습 경험과 적절한 산업 노출을 통해 학습을 적절하고 실용적으로 만들 수 있도록 돕는 산업 프로젝트가 포함됩니다. 프로그램을 완료하면 탐나는 IIIT B 인증 및 동문 자격을 갖춘 후보자에게 보상이 주어집니다.
이 프로그램은 upGrad의 360도 배치 지원과 함께 제공되어 전 세계의 40,000명 이상의 유료 학습자에게 영향을 주어 상황을 더욱 개선했습니다. upGrad는 85개국 이상의 학습자 기반을 보유하여 후보자를 위한 글로벌 동료 네트워크를 가질 수 있는 귀중한 기회를 제공합니다.
Java에서 멀티태스킹과 멀티스레딩의 차이점은 무엇입니까?
멀티태스킹은 여러 작업을 동시에 수행할 수 있는 프로세스이고 멀티스레딩은 여러 스레드를 동시에 실행하여 각 스레드가 다른 작업을 수행하는 프로세스입니다.
Java에서 다중 상속을 지원합니까?
프로그래밍 언어 Java는 클래스가 둘 이상의 인터페이스를 구현하는 프로세스인 다중 상속을 지원합니다. 클래스는 인터페이스에서 메소드의 다른 구현(기본 또는 정적)을 가질 수 있습니다. Java의 다중 상속은 C++ 언어와 달리 클래스가 아닌 인터페이스로만 구현할 수 있습니다.
멀티스레딩이 Java의 성능을 향상시킬 수 있습니까?
다중 스레딩은 여러 CPU가 동일한 문제를 처리할 수 있도록 하여 Java의 성능을 향상시킵니다. 이는 프로세스 속도를 높일 뿐만 아니라 효율적인 문제 해결에도 도움이 됩니다.