본문 바로가기

java2

[자바 병렬 프로그래밍] Lock에 대한 궁금점 자바 병렬 프로그래밍이란 책을 읽으면서 다음과 같은 내용이 있다. public class Parent { public synchronized void do() { System.out.println("parent"); } } public class Child extends Parent { @Override public synchronized void do() { System.out.println("child"); supder.do(); } } > 해당 코드는 암묵적인 락이 재진입 가능하지 않았다면 데드락에 빠졌을 코드 해당 코드와 설명을 보니 다음 내용처럼 궁금해졌다. synchronzied method 상속 여부 재진입을 지원하지 않는 경우 어떤 상황에서 데드락이 걸리는 것일까? 재진입이 가능하여 데드락.. 2021. 12. 21.
HashMap 내부는 충돌시 언제 트리 구조로 변경될까? 해시 맵 내부는 충돌 시 언제 트리 구조로 변경될까? 내가 알고 있는 지식이나 네이버 D2 블로그나 여러 블로그에서 확인한 내용은 내부에 버킷이 갖고 있는 노드의 개수가 8개 이상일 때 트리로 변경된다는 내용이었다. 여기서 내가 궁금한 건 정말 한 버킷에 노드의 개수가 8개 이상일 때 바로 연결 리스트에서 트리로 바로 바뀌는 것일까? 한번 내부를 확인해보자!!!!! 내부 탐색을 위한 예제 코드는 다음과 같다. (jdk 1.8 기준) HashMap에 더미 객체를 계속 생성해서 put 하는 간단한 예제 코드이다. 눈여겨볼 것은 해시 코드 재정의 시 1로 한 것이다. 해시 코드를 1로 재정의 한 이유는 같은 버킷 인덱스에 여러 노드를 쌓아 8개 일 때 트리로 변경되는지 확인하기 위함이다. 이제 본격적으로 내부.. 2021. 2. 2.