728x90
반응형
Hashtable과 HashMap과의 차이점은 Thread-Safe인지 아닌지 이다. Hashtable은 동기화가 걸려있어서 Thread-Safe하다고 할 수 있으며 HashMap은 동기화가 없어 unsafe하다고 할 수 있다. 그래서 안전성을 추구한다면 Hashtable을 쓰시면 되고, 데이터의 빠른 처리를 위해서라면 HashMap을 사용하면 된다.
쓰레드(Thread)는 간단히 정의하면 하나의 프로세스(실행중인 프로그램)에서 독립접으로 실행되는 하나의 일, 또는 작업의 단위를 말한다. 뭐, 더 간단히 말해 쓰레드를 여러개 사용하면 동시에 여러 작업을 할 수 있는 뜻이다.
우리가 익히 알고 있는 main 함수 역시 쓰레드입니다. 프로그램 실행 시 실행되는 첫번째 쓰레드이기 때문에 main함수를 우리는 메인 쓰레드라고도 한다.
728x90
ConcurrentModificationException이라는 예외는 쓰레드들이 동시에 데이터를 변경할때 이 예외가 발생한다.
thread가 forEach() 메소드가 수행하는 중에 메인 쓰레드에서 put으로 데이터를 집어넣고 있는 상황을 가정하면 HashMap에 동시에 접근해서 변경이 발생하게 되는 그런 코드이기때문에 예외가 발생하게 되는것이다.
이와 같은 상황에서 쓰레드에 동시접근에 안전하려면 Hashtable을 쓰는 것이 좋고, 단일 쓰레드에서 사용한다면 HashMap을 쓰는 것이 좋다.
반응형
728x90
반응형
'JAVA' 카테고리의 다른 글
Java에서 클래스와 객체 활용하기: 기본 개념과 사용법 (0) | 2024.03.07 |
---|---|
Java에서 조건문과 반복문 활용하기: 기초 문법 (0) | 2024.03.07 |
Java에서 배열 사용하기: 기초 문법 및 사용법 (0) | 2024.03.07 |
Gson 사용법과 정의 (0) | 2023.02.07 |
[JAVA] 오버로딩(Overloading)과 오버라이딩(Overriding)의 차이점 (0) | 2023.02.07 |