Programming/java

[java] 스레드(Thread)

성일만 2014. 9. 17. 15:17

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