관리 메뉴

bread, coffee and coding

java 스레드(Thread) 본문

Java

java 스레드(Thread)

DongJin lee 2021. 7. 7. 11:15

스레드(Thread)

기본적으로 운영체제와 관련이 있으면, 스레드를 이해하려면 먼저 프로세스(Process)를 이해해야 한다.

 

프로세스가 실행 중인 프로그램이라면, 스레드는 프로그램인 동시에 여러 작업을 실행할 목적으로 생성한 실행과 흐름의 단위로 경량 프로세스라고도 한다.

 

스레드는 프로세스 안에서 스택을 제외한 시스템 자원을 공유하므로, 프로세스를 여러 개 실행하는 것 보다 시스템 자원을 절약할 수 있다.

 

프로세스(Process)

실행 중인 프로그램을 말한다.

 

[ 스레드 프로그램 예 ]

 

 

문제점

· 프로그램이 버튼 처리 로직에만 묶여 있어 다른 작업을 수행할 수 없다

· 버튼1을 체크할 때 버튼3이 눌려 있다면 즉각적으로 처리하지 않는다

 

 

해결

· while( )에서 if 문으로 이벤트를 처리;하는 것보다 각 버튼이 독립적으로 동작하면서 이벤트 처리를 할 수 있다면 좋을 것이다.

 

 

장점

시스템 자원을 절약할 수 있다.

사용자에 대한 응답성이 향상된다.

프로세스 간 통신을 이용한 병렬 작업보다 스레드를 이용한 병렬 작업이 훨씬 간단하고 빠르다.

시스템의 처리 성능을 향상시킬 수 있다.

 

 

단점

프로세스 밖에서 각 스레드를 제어할 수 없다.

멀티스레드 프로그램을 작성하면 오류 발생 가능성이 높아지고, 잘못된 프로그램은 시스템에 영향을 미친다.

프로그램 디버깅이 상대적으로 어렵다.

단일 프로세스 시스템에서는 큰 효과를 기대하기 어렵다.

동기화Synchronization, 교착 상태Deadlock 같은 문제들을 고려해야 한다.

스레드가 효율적으로 고르게 실행될 수 있도록 해야 한다.

 

Thread 클래스를 상속받아 구현하는 방법

스레드 클래스를 별도로 분리하거나 Runnable 인터페이스를 구현하는 방법을 사용해야 한다.

 

 

Thread 클래스의 주요 메서드

 

 

멀티스레드 프로그래밍

 

멀티스레드는 말 그대로 하나의 작업(Task) 수행을 목적으로 여러 개의 스레드를 사용하는 프로그래밍 기법

 

멀티스레드의 동작 구조

 

 

 

스레드의 우선순위

 

- 황희정 IT CookBook, JUST JAVA : 객체지향에 충실한 자바 다운 자바 2015-10-26 <habit media ‘just java‘reference>    p226~239