Thread
Thread 개념
process : 현재 실행중인 프로그램
thread : 사전적 의미 -> 실 프로세스 내의 세부적 실행단위
곰플레이어 -> 프로세스
영상 스레드
음향 스레드 -> 멀티 스레딩 되어 프로그램이 동작
자막 스레드
네이트온 채팅 -> 프로세스
친구에게 글 전송 스레드
친구로부터 글 입력 스레드
Thread 생성 방법 2가지
1) extends Thread
HelloThread t = new HelloThread();
t.start();
2) implements Runnable
Hello h = new Hello();
Thread t = new Thread(h);
t.start();
Thread 구동방식
start() ---> 스레드 스케줄러 ---> run()
개발자는 스레드에 start() 명령을 내리고
jvm 의 스레드 스케줄러가 thread 를 실행(run)시킨다.
Thread 스케줄링 방식 -> 자바는 우선순위 방식을 채택
가장 높은 우선순위 : 10
가장 낮은 우선순위 : 1
기본 우선순위 : 5
t.setPriority(10); or t.setPriority(Thread.MAX_PRIORITY);
t.setPriority(1); or t.setPriority(Thread.MIN_PRIORITY);
일반적으로 스케줄링 방식에는 두가지가 있다.
1. 시분할 : 시간을 동등하게 분할하여 스케줄링
2. 우선 순위 : 중요도에 따라 스케줄의 확률이 다르게 처리
Thread synchronized(동기화)
Thread 는 데이터를 공유할 수 있다.
이 경우 공유 데이터를 동시에 접근시 문제 발생의 소지가 있다.
synchronized 를 통해 공유 데이터 처리의 안정성을 보장 받을 수 있다.
영화 예매시 동일한 좌석을 다수의 스레드가 접근할 경우
같은 좌석을 여러명이 배정 받을 수 있다
---> 이 경우 예매 로직(메서드) 에 동기화(synchronized) 처리 하여
그 지점만 단일 스레드 환경으로 수행 시키면 문제가 해결된다.
synchronized 처리의 두가지 방식
1) 메서드
public synchronized void reserve(){}
2) 코드블럭
public void reserve(){
synchronized(this){
// 예매 코드
}
}
'Programming > java' 카테고리의 다른 글
[java] 문서 파싱 및 추출(pdf, doc, docx, xls, xlsx, ppt, pptx) (0) | 2014.11.13 |
---|---|
[java] J2EE (0) | 2014.09.18 |
[java] 예외처리(Exception) (0) | 2014.09.17 |
[java] Generic (0) | 2014.09.17 |
[java] 상속(Inheritance) (0) | 2014.09.17 |