티스토리 뷰

728x90
반응형

synchronized


메소드 앞에 synchronized를 붙이면 해당 메소드 자체가 lock이 걸리게 된다

공정성을 보장하지않아 기아 상태가 발생할수도 있다


동기화 종류

방법 

설명  

임계구역(critical section) 

공유 자원에 대해 단 하나의 스레드만 접근하도록 한다.

(하나의 프로세스에 속한 스레드만 가능하다)

 뮤텍스(mutex)

공유 자원에 대해 단 하나의 스레드만 접근하도록 한다.

(서로 다른 프로세스에 속한 스레드도 가능)

 이벤트(event)

특정한  사건의 발생을 다른 스레드에게 알린다.

세마포어(Semaphore) 

한정된 개수의 자원을 여러 스레드가 사용하려고 할때 접근을 제한한다 

대기 가능 타이머(waitable timer) 

특정 시간이 되면 대기중이던 스레드를 깨운다 


* 기아상태

우선순위에 따라 먼저 처리될수가 있으며 우선순위에 밀려 계속 처리되지 못하는 상태


lock


synchronized 보다 정교한 동기화가 가능

공정성을 보장 가능


* java concurrent lock 종류

ReentrantLock : 재진입이 가능한 lock, 일반적인 베타 lock

RentrantReadWriteLock : 읽기에는 공유적이고, 쓰기에는 베타적인 lock

StampedLock : RentrantReadWirteLock에 낙관적인 lock 기능을 추가


* 사용예시

final Lock lock = new ReentantLock();


try{

this.lock.lock();

// 처리

}finally{

this.lock.unlock();

}


728x90
반응형

'Java' 카테고리의 다른 글

[Java] HttpURLConnection timeout 설정  (0) 2020.10.29
[Java] 스레드 풀  (0) 2020.09.09
[Java] Converting MultipartFile to File  (0) 2020.09.09
{Java] Java 4에서 HmacSHA256 알고리즘 사용  (0) 2020.09.09
[Java] Java1.4 와 1.5 차이점  (0) 2020.09.09
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함