본문 바로가기

프로그래밍/JAVA

쓰레드 기본

java 에서의 쓰레딩

 

자바에서 쓰레드를 생성하는 방법은 2가지이다.

Thread 객체 / Runnable interface

 

뭐 이 두가지가 있으니 extends 나 implements 나 입맛대로 구현하면 되것다.

단, Runnable 은 워커쓰레드의 동작에 해당되는 run() 메쏘드만을 포함하고 있으므로,

실제 수행단계에서 Thread( Runnable ) 로 객체를 생성해 사용한다.

 

Thread 객체를 상속받아 필요한 ( run() 같은 ) 메쏘드를 오버라이딩해

구현해 주면 된다.

 

 

 

 

* 생성자

Thread() : 일반적으로 생성. 쓰레드명은 Thread-카운트 형태로 구성됨

Thread( String ) : 특정 쓰레드명으로 생성

Thread( Runnable ) : Runnable 객체를 사용해 생성

Thread( Runnable, String ) : Runnable 객체와 쓰레드명 지정가능

Thread( ThreadGroup, String ) : 그룹 생성

 

 

 

 

 

* 쓰레드의 동기화

synchronized : 블럭/객체/클래스 동기화

함수 선언시 synchronized 를 붙이면 해당 함수 자체에 임계영역이 지정됨.

일반적으로 많이 사용됨.

 

synchronized( obj ) { }; 형태는 객체를 lock 하고,

synchronized( obj.class ) { }; 클래스를 lock 하게된다.

 

notification : WaitForSingleObject 같은 녀석으로 Object 객체에 구현되어있으니 모든 객체들에

포함된 녀석이라 할 수 있다.

일단 synchronized 를 통해 임계영역을 설정하고, 해당 영역에서 플래그나 변수를

검사해 wait() 메쏘드로 대기한다.

notify(), notifyAll() 메쏘드로 대기중인 쓰레들을 다시 동작시킨다.

 

 

휴~ 오늘도 역시 기본만~ -_-;;

'프로그래밍 > JAVA' 카테고리의 다른 글

Apache HttpClient 관련 정리  (0) 2014.03.11
[JAVA TV] MHP 배경이미지 처리  (0) 2013.12.27
[JAVA TV] 타이머  (0) 2013.12.27
[awt] 이미지 읽기~  (0) 2013.12.17
GSON 간단 사용 예  (0) 2013.09.12
CRC16-CCITT crc생성함수  (0) 2012.10.04
ExecutorService  (0) 2012.05.11
정규식 표현  (0) 2012.04.05
클래스 동적 생성,호출 (리플렉션)  (0) 2010.09.04
이클립스(갈릴레오) SVN 설정  (0) 2009.11.12