Today's special moments become memories of tomorrow.

JAVA 5

[java] 스레드(thread)

스레드(thread)란, 프로세스 내에서 실행되는 하나의 실행 흐름 단위를 말한다. 멀티 스레딩은 프로세스 내에 여러 스레드가 동시에 작업을 수행하는 것을 의미한다. 자바에서 스레드는 자바 가상 머신(JVM)에 의해 스케줄링 및 관리된다. 스레드의 생명주기를 비롯해 스레드 개수, 스레드 간의 우선순위 등을 JVM이 관리한다. 자바에서 개발자가 스레드를 생성하는 코드를 작성하면, JVM은 스레드를 생성한다. 스레드 구현 자바에는 스레드를 구현하는 두 가지 방법이 있다. 1. java.lang.Thread 클래스 상속 2. java.lang.Runnable 인터페이스 구현 1. Thread 클래스 상속 Thread가 클래스이므로 extends 키워드를 이용하여 상속한다. Thread 클래스를 상속하면 run..

JAVA 2021.04.15

[java] HashMap, TreeMap, LinkedHashMap

Map은 key와 value 쌍으로 이루어져 key를 통해 원하는 데이터(value)를 찾는 자료 구조이다. 자바에서는 Map 인터페이스를 제공하고, 이 인터페이스를 상속받는 3가지 클래스가 존재한다. 바로 HashMap, TreeMap, LinkedHashMap이다. HashMap 보통 자바에서 Map을 사용하면 HashMap을 가장 흔하게 사용한다. HashMap은 해싱 테이블을 통해 데이터를 저장하는 방식이다. 따라서 HashMap은 검색 속도가 O(1)으로 매우 빠르다는 장점이 있다. 따라서, Map에 포함된 key들의 순서가 중요하지 않다면 HashMap을 사용하는 것이 유리하다. TreeMap 이진 검색 트리(Binary Search Tree)를 통해 데이터를 저장하는 방식이다. 어떠한 데이터..

JAVA 2021.04.14

[java] 예외 처리

자바에서 예외는 크게 Error 와 Exception 로 나눌 수 있다. 자바에서 모든 예외는 Throwable 클래스로부터 파생된다. Throwable 클래스로부터 Error와 Exception으로 나뉘게 되며, Exception은 다시 기타 예외들과 RuntimeException으로 나뉜다. Error Error는 치명적인 오류가 발생하는 경우이다. 여기서 '치명적이다' 라는 것은 오류가 복구 불가능하여 별다른 처리를 할 수 없는 상태이다. 따라서 Error는 예외처리 대상이 아니다. 우리가 흔히 접하는 Error에는 대표적으로 OutOfMemoryError, StackOverflowError 등이 있다. - OutOfMemoryError : 메모리를 초과하는 경우 발생하는 에러 - StackOver..

JAVA 2021.04.03

[java] String, StringBuffer, StringBuilder

자바에서 문자열을 나타낼 때 String, StringBuffer, StringBuilder 3가지 클래스를 사용할 수 있다. 하지만 이 3가지는 약간의 차이가 존재한다. String 가장 기본적인 문자열 클래스이다. String str = "Hello"; 를 선언하면 str는 참조변수로써 "Hello"가 존재하는 주소를 가리킨다. String 클래스는 기본적으로 Immutable이다. Immutable 객체란, 변하지 않는 객체임을 의미한다. 예를 들어 String str = "Hello"; 라고 선언한 후, 기존의 "Hello" 문자열 뒤에 "World" 를 추가하고 싶은 경우, str = str + "World"; 을 실행하면 문자열 뒤에 "World"를 추가할 수 있게 된다. String str ..

JAVA 2021.04.02

[java] ArrayList, LinkedList, Vector

ArrayList, LinkedList, Vector 모두 java.util 패키지에 존재하는 List 인터페이스를 구현한 클래스이다. ArrayList ArrayList는 List를 배열로 구현한 것이다. 따라서 인덱스를 통해 요소에 접근한다는 점에서 배열과 유사하다. 하지만 배열은 그 크기가 고정되어 있는데 반해 ArrayList는 크기를 동적으로 변경이 가능하다. add() 메서드를 통해 요소를 새로 추가할 수 있다. Vector Vector도 List를 배열로 구현한 것이다. 배열과 달리 동적으로 크기를 변경할 수 있다는 점에서 ArrayList와 유사하다. ArrayList와 마찬가지로 add() 메서드를 통해 새로운 요소를 추가할 수 있다. ArrayList는 멀티 스레드 환경에서 동기화를 지..

JAVA 2021.04.01