멀티쓰레드 프로그래밍

LeeSeungHwan dev·2021년 1월 29일
0

목표
자바의 멀티쓰레드 프로그래밍에 대해 학습하세요.

학습할 것 (필수)
Thread 클래스와 Runnable 인터페이스

쓰레드의 상태
쓰레드의 우선순위
Main 쓰레드
동기화
데드락

-Thread 클래스와 Runnable 인터페이스
Thread클래스

Runnable클래스

-쓰레드의 상태

https://widevery.tistory.com/27

-쓰레드의 우선순위
쓰레드 우선순위 지정하기
void setPriority(int newPrioruity)//쓰레드의 우선순위를 지정한 값으로 변경한다.
int getPriority()// 쓰레드의 우선순위를 반환한다.
public static final int MAX_PRIORITY =10; //최대 우선순위
public static final int MIN_PRIORITY =1; //최소 우선순위
public static final int NORM_PRIORITY =5;//보통 우선순위

-Main 쓰레드
자바에서 main()메서드는 프로그램의 시작점이다.
그리고 main()메서드 또한 스레드에 의해 실행되는데 이쓰레드를 main쓰레드라 한다.

-동기화
한쓰레드가 특정 작업을 마치기 전까지 다른 쓰레드에 의해 방해받지 않도록 하기위해 도입된 개념이 임계영역과 락이다.
임계영역:공유 자원에 대해 하나의 쓰레드만 접근이 가능한 영역
락:공유전체의 여러쓰레드가 동시에 접근하지 못하게 모든 객체가 힙 영역에 생성 될때 자동으로 만들어진다.
-synchronized(쓰레드 동기화)
ex)public synchronized void calcsun(){
// 임계영역
}
ex)synchronized(객체의 참조변수){
// 임계영역
}

-데드락
데드락인 두개이상의 작업이 서로 작업이 종료 되지 않아 서로의 작업을 무한정 기다리는 상태를 말한다.
*교착상태 발생조건
1.상호배재
프로그램들이 공유자원을 동시에 쓸수 없는 상황을 말한다.
2.점유상태로 대가
자원을 점유한 상태에서 다른 자원을 기다리는것은 할당받은 자원을 사용하지 않고 계속 점유하면 그 자원이 필요한 프로세는 무한정 대기한다.
3.선점불가
어떤 프로세스가 점유중일때 다른 프로세스가 자원을 뺏을수 없다는것이다.
4.순황성대기
대기가 꼬리를 물어 연쇄 대기 상태이다.

출처
자바의 정석

profile
생각하는 개발자가 되자!

0개의 댓글