분류 전체보기 (46) 썸네일형 리스트형 자바 스레드 1. 프로세스란? - 프로세스(process)란 단순히 실행 중인 프로그램(program)이라고 할 수 있다. - 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것이다. - 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성한다. - JVM이 시작되면 하나의 프로세스가 실행되고 프로세스란 큰 개념 아래 여러 개의 스레드가 수행되며 프로그램이 동작하게 된다. 2. 스레드란? - 프로세스 하나 시작하려면 많은 자원이 필요한데, 하나의 작업을 동시에 수행할 때 프로세스를 여러 개 띄운다면 각각 메모리 할당하여 메모리 문제가 심각해질 것이다. 따라서 하나의 프로세스에 여러 개의 스레드를 실행하여 처리한다. 3. Runnable 인터페이스와 T.. 자바 가비지 컬렉션과 Heap 메모리 구조 1. 가비지 컬렉션이란? - Heap 영역에서 동적으로 할당된 메모리 중에서 더 이상 사용되지 않는 객체를 자동으로 찾아 해제하는 프로세스이다. 2. 가비지 컬렉션의 단점 - 메모리가 언제 해제되는지 정확하게 알 수 없다. - 가비지 컬렉션이 동작하는 동안 다른 동작을 멈추기 때문에 오버헤드가 발생한다. 3. 가비지 컬렉션 대상 - 도달성이라는 개념을 통해 가비지 컬렉션 대상을 판별한다. 도달 가능한 객체란? - 어떤 객체가 다른 객체를 참조하는 경우, 그 객체는 도달 가능한 상태이다. 도달 불가능한 객체란? - 도달 가능한 객체들과 연결된 참조가 더 이상 존재하지 않는 경우이다. // 도달 가능한 객체 MyClass obj1 = new MyClass(); MyClass obj2 = new MyClass.. 자바 컴파일 언어와 인터프린터 언어 1. 컴파일 언어 - 프로그램을 실행하기 전에 소스 코드를 기계어로 변환 후 기계어 코드를 실행하여 프로그램을 동작시킨다. - 컴파일 언어의 대표적인 예로는 C, C++, Java 등이 있다. 장점 - 컴파일 언어의 특징은 소스 코드를 한 번 컴파일하고 나면 컴파일된 실행 파일을 반복해서 실행할 수 있다. 이로 인해 반복적인 실행에서는 빠른 성능을 보이는 장점이 있다. - 컴파일된 실행 파일은 소스 코드가 아닌 기계어이기 때문에 보안에 뛰어나다. 단점 - 프로그램을 실행하는데 필요한 모든 파일을 스캔하기 때문에 컴파일링 시간이 느리다. - 수정하면 다시 컴파일 해야한다. 2. 인터프린터 언어 - 인터프리터 언어는 프로그램을 실행하는 단계에서 소스 코드를 한 줄씩 읽어들이고, 각 줄을 바로 실행한다. - .. 자바 String이 메모리에 저장되는 방식 String을 생성하는 방법은 두 가지이다. 1. new 연산자를 이용하는 방식 2. 리터럴을 이용하는 방식 String text1 = "text"; String text2 = "text"; String text3 = new String("text"); System.out.println(text1 == text2); //true System.out.println(text1 == text3); //false System.out.println(text1.equals(text2)); //true System.out.println(text1.equals(text3)); //true text2 = "text" + "change"; System.out.println(text1 == text2); //false Sy.. 자바 Map 1. Map 이란? - Key와 Value 한쌍으로 데이터를 저장하는 자료형이다. - 키와 값은 각각 객체로 이루어져 있으며, 키는 중복될 수 없다. - 리스트나 배열처럼 순차적으로 요소 값을 구하지 않고 key로 value를 가져오기 때문에 특정 데이터를 빠르게 조회할 수 있다. 2. Map의 클래스 - HashMap: key와 value를 hash알고리즘을 이용하여 값을 저장한다. 따라서 검색속도는 매우 빠르다. // HashMap 객체 생성 Map hashMap = new HashMap(); // 데이터 추가 hashMap.put(1, "사과"); hashMap.put(2, "바나나"); hashMap.put(3, "포도"); hashMap.put(4, "사과"); // 기존 "사과" 키의 값이 업.. 자바 Set 1. Set 이란? - Set은 순서가 없고, 중복 값을 허용하지 않는 특정한 값을 저장한다. - 집합이란 의미를 가진다. 2. Set의 특징 - 동일한 값을 중복해서 저장하지 않으므로, 중복된 값들이 필요없는 경우 사용한다. - 요소들의 순서를 저장하지 않는다. 따라서 인덱스를 사용하여 요소에 접근하는 것이 불가능하다. - Set 구현 클래스: HashSet, TreeSet, LinkedHashSet 등이 있다. 3. Set의 종류 - HashSet: 해시 테이블을 기반으로 요소들을 저장한다. 순서를 보장하지 않으며, 가장 빠른 검색 시간을 가지고 있다. 하지만 요소들의 순서를 예측할 수 없다. 만약, 순서가 중요한 경우 LinkedHashSet을 사용한다. import java.util.HashSet.. 자바 동기화 1. 동기화란? - 자바에서 멀티스레드를 이용하면 여러 작업을 동시에 처리할 수 있어 효율이 좋아진다. 하지만 하나의 공유자원을 여러 스레드에서 동시에 접근하면 데이터 불일치, 문자열 손실 같은 문제가 생길 수 있다. 이와 같은 문제를 해결하기 위해 스레드 동기화 이다. 2. synchronized를 이용한 동기화 설정 - synchronized 동기화는 메서드, 코드 블럭 두 가지가 있다. - 메서드 동기화 (Synchronized Method): 메서드 선언부에 synchronized 키워드를 사용하여 메서드 전체를 동기화한다. 이 경우 해당 메서드가 호출될 때 해당 객체에 대한 락을 사용하여 여러 스레드가 동시에 해당 메서드에 접근하는 것을 막는다. // 동기화 메서드 public synchroni.. 자바 Queue 1. 큐 (Queue) 란? - 데이터를 일시적으로 저장하는 자료구조이다. - 스택과 다르게 먼저 들어온 데이터가 먼저 나가는(First-In-First-Out, FIFO) 방식이다. - 큐는 주로 데이터를 처리하는 순서를 관리하고, 작업을 대기열에 저장하거나 동시에 여러 작업을 처리하는 멀티스레드 환경에서 사용한다. - 줄을 서서 기다린다는 것처럼 먼저 들어오는 데이터가 먼저 나가는 형식이다. - Enqueue (rear) : 큐의 뒷 부분이고 삽입 연산만 수행한다. - Dequeue (front) : 큐의 앞 부분이고 삭제 연산만 수행한다. 2. 큐 (Queue) 특징 - 큐는 일반적으로 크기가 제한되어 있고, 새로운 값을 추가할 때 큐가 가득 차 있는 경우 값을 추가할 수 없다. - 이런 경우에 따.. 이전 1 2 3 4 5 6 다음