2008년 08월 22일
동기화(synchronized)는 이럴때 사용한다.
동기화 코드의 예
public synchronized void sampleMethod(){
//중간 생략
}
private Object obj=new Object();
public void sampleBlock(){
synchronized(obj){
//중간생략
}
}
* 동기화를 사용 할 때(synchronized는 생성자의 식별자로는 사용 할 수 없다.)
- 하나의 객체를 여러 스레드에서 동시에 사용 할 경우
- 스태틱으로 선언한 객체를 여러 스레드에서 동시에 사용 할 경우
- static 변수에 동기화를 사용할때는 호출한 메소드도 static이어야 하고, 반드시 필요한 곳에만 사용해야한다,(성능문제)
* 동기화를 위해서 자바에서 제공하는 JDK 5.0 java.util.concurrent 패키지의 중요한 4가지 개념
- Lock: 실행 중인 스레드를 간단한 방법으로 정지시켰다가 실행시키도록 한다. 상호 참조로 인해 발생하는 데드락을 피할 수 있다.
- Executors: 스레드를 더 효율적으로 관리 할 수 있는 클래스들을 제공한다. 스레드풀도 제공하므로, 필요에 따라 유용하게 사용 할 수 있다.
- Concurrent 콜렉션: 앞서 콜렉션 클래스들을 제공한다.
- Atomic 변수: 동기화가 되어 있는 변수를 제공한다. 이 변수를 사용하면 synchronized 식별자를 메소드에 지정할 필요 없이 사용 할 수 있다.
더 자세한 사항은 다음의 주소를 참조한다.
http://java.sun.com/docs/books/tutorial/essential/concurrency/highlevel.html
# by | 2008/08/22 01:13 | JAVA 향기 | 트랙백 | 덧글(0)








☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]