멀티 스레드간에 동기화를 하기위해선 락을 잡아야한다. 자바에서 락을 잡는법은 모두들 알고있을 synchronized 키워드를 이용한 모니터락을 잡는방법과 1.5부터 추가된 Lock 인터페이스의 구현체를 이용하는 방법이 있다. 이 두 방식에서 각각 데드락 상태가 됐을때 스레드덤프의 내용은 동일한 내용일까? 이 포스팅에서는 그 차이를 확인해보려한다. 먼저 synchronized 키워드를 이용한 간단한 데드락 코드를 작성하자. private final Object lock1 = new Object(); private final Object lock2 = new Object(); public static void main(String[] arg) { ExecutorService es = Executors.new..
Java 1.5 에 추가된 concurrent 패키지엔 유용한 동기화 클래스들을 제공해준다. 이 클래스들을 이용하면 손쉽게 멀티 스레드에 안전한 코드를 작성할 수 있다. 이번 포스팅에서는 concurrent 패키지 내에 있는 3개의 동기화 클래스를 간략하게 알아보고자 한다. 1. CountDownLatch Latch 의 사전적 의미는 '걸쇠' 이다. 원하는 지점에서 await() 메서드를 호출해서(걸쇠를 걸어서) 코드의 진행을 중단시키고, 다른 스레드들에서 원하는 횟수만큼 countDown() 메서드를 호출해주면 그때 비로소 코드가 진행되게 된다. 코드로 확인해보자. 원하는 횟수를 지정한 인스턴스를 생성한다. 해당 예제코드에서는 5를 지정했다. CountDownLatch countDownLatch = n..
- Total
- Today
- Yesterday
- programming
- JPA
- http
- DesignPattern
- 정규표현식
- code
- clean code
- javascript
- servlet
- frontend개발환경
- java
- MySQL
- Jackson
- toby
- java8
- mariadb
- generics
- db
- Spring
- Design Pattern
- Git
- JavaScript Core
- Kotlin
- OOP
- backend개발환경
- EffectiveJava
- go-core
- frontcode
- spring cloud
- TEST
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |