| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 엘라스틱서치
- 이펙티브
- 인터페이스
- java8
- 독후감
- jface
- Web
- 후기
- 스프링
- javascript
- 알고리즘
- JPA
- 맛집
- boot
- 자바
- kibana
- 리뷰
- 백준
- Spring
- RCP
- nodejs
- 자바스크립트
- MySQL
- Git
- java
- error
- node
- effective
- Spring Boot
- elasticsearch
- Today
- Total
목록Wait (2)
wedul
멀티 쓰레드 환경에서 wait와 notify를 사용할 경우에 주의가 필요하다. 하지만 그것을 효율적으로 사용하기에는 많은 어려움이 따른다. 그렇기 위해서 wait와 notify를 정확하게 사용하기 위해서는 high-level util(고수준 유틸리티)을 사용해야 한다.이런 고수준 유틸리티들은 Executor, Concurrent Colloection, Synchronizer를 통해 사용할 수 있다.그중 Conncurrent Collenction (병행 컬렉션)에 대해 알아보자. 대부분에 컬렉션 Map, List, Queue등은 병행 컬렉션을 제공한다. 병행성 컬렉션대표적으로 Map에서 제공하는 ConcurrentMap이다. 그중 putIfAbsent(key, value) 메서드가 대표적이다. 이 메서드는..
문제점하나의 쓰레드가 객체에 lock 을 걸고 어떤 조건이 만족될 때까지 기다려야 하는 경우, 이 쓰레드를 그대로 놔두면 이 객체를 사용하려는 다른 쓰레드들은 lock이 풀릴 때 까지 같이 기다려야 하는 상황이 발생 해결책 이런 비효율을 개선하기 위해서 wait()와 notify()를 사용한다. 한 쓰레드가 객체에 lock을 걸고 오래 기다리는 대신 wait()을 호출해서 다른 쓰레드에게 제어권을 넘겨주고 대기상태로 기다리다가 다른 쓰레드에 의해서 notify() 가 호출 되면 다시 실행 상태가 되도록 하는 것이다. wait(), notify(), notifyAll()- object 클래스에 정의된 메소드이므로 모든 객체에서 호출이 가능하다.- 동기화 블록(synchronized블록) 내에서만 사용이 가..
