🎯 HashTable 의 한계와 ConcurrentHashMapConcurrentHashMap 은 HashTable 대안으로 나온 Collection 타입입니다. HashTable 은 멀티 스레드 환경에서 항상 안전하지 않습니다. 예를 들어 다음과 같은 상황이 있다 생각해 봅시다. Hashtable table = new Hashtable();if (!table.containsKey("key")) { // 1. 키가 있는지 확인 table.put("key", 1); // 2. 키가 없으면 삽입} 위 코드를 멀티 스레드 환경에서 실행할때, (1) 스레드 A 가 containsKey() 를 실행하고, 동시에 스레드 B 도 동일한 검사를 수행합니다.(2) 두 스레드가 거의 동시에 put()..
JAVA

🎯 LinkedList 란 ?LinkedList는 노드(객체) 들이 연결된 형태의 자료 구조 입니다. 예를들어 사람 줄을 세우는데 첫번째 사람의 정보에 그 다음 사람이 어디 있는 지를 표시해 놓은 방법입니다. ArrayList 와는 차이점이 있는데, 내부적으로 배열을 이용해 조작이 가능한 자료구조가 ArrayList 라면 LinkedList 는 노드끼리의 포인터를 서로 가리키며 참조하게 만들어진 구조 입니다. 즉, 각각의 노드(객체)에는 다음 노드가 어디 있는지를 포함하고 있는 연결 형태의 자료구조 입니다. LinkedList 와 ArrayList 의 차이점을 정리해보면 다음과 같습니다. 특징ArrayListLinkedList구조동적 배열이중 연결 리스트인덱스 접근 속도빠름 O(1)느림 O(n)삽입..

🎯 equals란 ?equals() 란 Java 에서 두 객체가 동일한지를 비교하는 메서드 입니다. 기본적으로 Object 클래스에서 제공하며, 기본 구현은 두 객체의 참조값(메모리 주소)를 비교합니다. 하지만 우리가 의미적으로 동일한지 비교하려면 equals() 메서드를 재정의 해야 합니다. String s1 = new String("hello");String s2 = new String("hello");System.out.println(s1.equals(s2)); // true, 값이 동일하기 때문System.out.println(s1 == s2); // false, 서로 다른 객체 참조 커스터마이징 예제class Person { private String name; publi..
🎯 record 란 무엇일까 ?record는 Java 14에서 처음 도입되었고, Java 16에서 정식으로 추가된 새로운 타입의 클래스입니다. Record는 불변(immutable) 데이터 구조를 표현할 때 사용되며, 데이터 자체를 저장하는 데 중점을 둔 간결하고 효율적인 클래스를 만들 수 있게 해줍니다. record 는 다음과 같은 특징을 가지고 있습니다. (1) 자동으로 생성되는 필드, 생성자, 메서드 Record 는 클래스의 필드 선언을 통해 equals(), hashCode(), toString() 등의 메서드와 생성자를 자동으로 생성합니다. (2) 간결함 기존의 클래스 선언과 비교해 Record 로 선언된 클래스는 훨씬 더 간결하게 데이터를 표현할 수 있습니다. record 를 사용한 클래스..

🎯 멀티 스레드란? 멀티 태스킹이란 두 가지 이상의 작업(Task)을 동시에 처리하는 것을 말합니다. 컴퓨터 운영체제는 여러 프로그램이 실행되는 것처럼 보이도록 관리하며, CPU 시간을 분할하 여 각 프로그램이 차례대로 실행되도록 합니다. 예를 들워 워드로 문서작업을 하는 동시에 음악을 듣는 것은 운영체제가 프로세스마다 작업을 병렬로 처리하기에 가능합니다. 멀티 태스킹이 꼭 멀티 프로세스를 말하는 것은 아닙니다. 한 프로세스 내부에서 멀티 태스킹을 할 수 있도록 만들어진 프로그램도 있습니다. 예를 들어 메신저 프로세스 같은 경우 채팅 기능을 제공함과 동시에 파일 업로드 기능을 수행할 수 있습니다. 이처럼 한 프로세스에서 멀티 태스킹이 가능한 이유는 멀티 스레드(Multi Thread) 덕분 입니다. ..