HashMap vs Hashtable
큰힘
검색을 하던중에 아래 내용에 관해서 궁금한 것이 있어서 질문드립니다.
HashMapno가장 빠른 매핑. HashtableyesHashMap 보다 느리지만 동기화한 HashMap 보다 빠르다. TreeMapnoHashtable 과 HashMap 보다 느리다. 차례대로 키를 사용할 수 있다. (키가 정렬됨)
Hashtable 내용 중에 동기화한 HashMap보다 빠르다라고 나와있는데요.
여기서 말하는 동기화란 어떤 것인가요??
동기화라는게 이해하기가 좀 어려운듯..
저는요 ㅎㅎ
-
나봄
와우.. 버섯수다님은 정말 모르시는게 없으신듯^^;;
자바를 만드신분이신가요?? ㅎㅎ
아.. 나도 잘하고 싶다 ㅠㅜ -
민구
흠.. HashMap의 경우 기본적으로 스레드를 고려하지 않았기때문에 동기화 로직 자체가 없습니다.
따라서, 두 개 이상의 스레드에서 실행시에는 데이터가 깨질 수 밖에 없겠죠.
이를 동기화 시키려면..
조금까칠한남자님께서 직접 외부에서 동기화를 시켜 주시거나..
아니면 찬님이 덧 글 단 것처럼 해주시면 HashMap 안에서(?) 동기화가 진행됩니다.
관심을 갖는 부분이 동기화의 주체인 듯 싶으신데..
쉽게 보시면...
HashMap 자체에는 동기화가 -
뽀송뽀송
일단 답변 감사드립니다. 버섯수다님 글을 읽고 보니 제가 동기화를 잘못 이해한것 같습니다. 잠깐 다시 공부 좀 하고 돌아올게요 ㅎㅎ
-
미리별
HashMap 보다 느리지만 동기화한 HashMap 보다 빠르다.
라는 부분은...
창구가 1개뿐이 없는 HashMap과 비교해 보자면...
HashTable의 경우 창구는 똑같이 1개라고 해도...
고객이 요청하는 요청을 처리하는 단계가 적어서
HashMap보다는 조금 더 빨리 처리된다는 의미입니다.
뭐... 동기화된 HashMap이 고객의 요청을 받아서 상사 3명에게 보고한뒤
상사로부터 결과를 받아서 고객에게 통보 해야 한다고 가정하면
Has -
나로
흠..
단지 HashMap에 동기화가 된다면 어떻게 되는지^^ 뭐 이런게 궁금한거죠^^ㅎㅎ
라는 글로 봐서는... 동기화를 잘 모르시는 듯--;;;
즉, HashMap은 기본적으로 멀티쓰레드를 기반으로 하지 않는 다는 이야기입니다.
동기화를 알고 계신다니 굳이 설명은 필요 없겠지만..
은행으로 설명하자면 HashMap은 기본적으로 멀티쓰레드를 고려하지 않기때문에
접수 창구가 10개있는 은행이 있을경우 HashMap은 10개의 창구중
어느 창 -
이뻐
찬님 답변 감사드립니다.^^
동기화라는 것을 제대로 설명할 수 있을 정도로 알지는 못하지만^^
무엇인지는 알고 있습니다^^
단지 HashMap에 동기화가 된다면 어떻게 되는지^^ 뭐 이런게 궁금한거죠^^ㅎㅎ
좋은 밤 되세요^^ -
이뻐
만약 \동기화\자체를 잘 모르신다면
synchronize 관련쪽 강좌를 찾아 보세요~ ㅎ -
풋내
동기화한 HashMap이란..
HashMap syncHashMap = Collections.synchronizedMap(new HashMap());
을 이야기 하는것이지 않을까요?
잘 몰라요~ ㅎㅎ
참고로 위와 같이 하면,
HashMap에 작업을 하는 모든 메소드의 호출이 synchronized block안에 들어가게 됩니다.