일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬 데이터분석
- 스칼라 강좌
- 그라파나
- 안드로이드 웹뷰
- 파이썬 동시성
- 플레이프레임워크
- 하이브리드앱
- Adapter 패턴
- Hyperledger fabric gossip protocol
- 스위프트
- play 강좌
- 파이썬
- Akka
- CORDA
- Golang
- hyperledger fabric
- 이더리움
- 스칼라 동시성
- 블록체인
- 엔터프라이즈 블록체인
- 스칼라
- play2 강좌
- Actor
- 파이썬 머신러닝
- akka 강좌
- 주키퍼
- Play2 로 웹 개발
- 파이썬 강좌
- 하이퍼레저 패브릭
- Play2
- Today
- Total
HAMA 블로그
자바 쓰레드 테스트 본문
1 번쓰레드가 synchronized 안으로 들어가면 2 번쓰레드는 synchronized 안으로 진입 불가.
1 번쓰레드가 함수자체를 빠져나오면, 그때서야 2번 쓰레드는 함수 진입가능
1 번쓰레드가 synchronized 안으로 들어가면 2 번쓰레드는 synchronized 안으로 진입 불가.
1 번쓰레드가 synchronized 를 빠져나오면, 그때서야 2번 쓰레드는 함수 진입가능
1 번쓰레드가 synchronized 안으로 들어가면 2 번쓰레드는 synchronized 안으로 진입 불가.
1 번쓰레드가 5초후에 synchronized 를 빠져나오면, 그때서야 2번 쓰레드는 함수 진입가능
1 번쓰레드가 synchronized 안으로 들어가면 , 2번 쓰레드는 synchronized 에 대기하고있다가
1 번 쓰레드가 wait 에 진입하는 순간 , 2 번쓰레드는 synchronized 안으로 진입
2 번 쓰레드도 wait 에 진입하고 ,
1 번 쓰레드가 wait 에서 3초 대기후 빠져나오면서 synchronized 의 락을 다시 되찾고,
synchronized 의 락을 되돌려 주면서 종료
2 번 쓰레드도 wait 에서 3초 대기후 빠져나옴.
1 번쓰레드가 1번째 synchronized 안으로 들어가고, 2번째 synchronized 안의 wait 에 진입해도
2 번쓰레드는 synchronized 안으로 진입 불가.
1 번쓰레드가 3초후 함수자체를 빠져나오면, 그때서야 2번 쓰레드는 함수 진입가능
1 번쓰레드가 synchronized 안으로 들어가면 , 2번 쓰레드는 synchronized 에 대기하고있다가
1 번 쓰레드가 wait 에 진입하는 순간 , 2 번쓰레드는 synchronized 안으로 진입
2 번 쓰레드도 wait 에 진입하고 , 두개의 쓰레드가 wait 하고 있을때
notify 가 호출되면 ??
테스트에 의해서는 먼저 wait 된것이 먼저 빠져나왔는데, 문서에는 보장못한다고 한다.
주의할것은 notify() 하면 하나만 빠져나오지만, notifyAll() 하면 모두 빠져나온다.
물론, 1번 , 2 번 쓰레드가 동시에 빠져나오는것은 아니며, 1번이 빠져나오면 synchronized 에 대한
락을 소유하기때문에, 2 번은 대기하다가, 1번이 락을 해제하면, 그때 2번이 락을 잡고 빠져나온다.
따라서, 아래처럼 wait() 문 주위로 while 로 감싸주는 코드를 사용한다.(notifyAll 한번 호출에 하나씩 활동
하기위해~notify 써도되긴 한다.근데 notify 를 쓰면 좀비쓰레드가 생길 가능성 up!!)
'Java' 카테고리의 다른 글
자바 Concurrent 라이브러리 정리 (0) | 2015.08.31 |
---|---|
자바 쓰레드 점유율 팁 ( 점유율을 공평하게 만들자) (0) | 2015.08.18 |
자바 경로 (Path) 및 사용법 정리 (0) | 2015.08.12 |
ClassNotFoundException 와 NoClassDefFoundError 차이 (0) | 2015.07.31 |
직렬화(serialization) 에 대한 짧은 이야기 (Q/A) (0) | 2015.07.07 |