카테고리 없음

[기본] 키워드로 간단하게 알아보는 Java.4

スモモ🍒 2024. 2. 23. 18:12

● 프로세스 (process) : 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션이 실행되는 것

(실행 중인 하나의 애플리케이션, 각 프로세스는 서로 독립적)

- 하나의 애플리케이션은 멀티 프로세스를 만들기도 함 (2개를 실행했다면 2개의 프로세스가 생성된 것)

 

● 스레드 (thread) : 프로세스 내부에서 코드의 실행 흐름, 일의 최소 단위

- 멀티 스레드 : 하나의 프로세스가 두 가지 이상의 작업을 처리하는 것

( 하나의 프로세스에 생성되기 때문에 하나의 스레드가 예외 발생 시 프로세스 자체가 종료될 수 있음,

대용량 데이터 처리 시간 감소, 다수 클라이언트 요청 처리하는 서버 개발 시 사용)

- 메인 스레드 : 자바의 모든 애플리케이션은 메인 스레드가 main() 메소드를 실행하면서 순차적으로 시작

(멀티 스레드를 생성하여 멀티 태스킹을 수행)

public static void main(String[] args) {
	String data = null;
    if(...) {
    }
    while(...) {
    }
    System.out.println("...");	// 병렬식 실행
}

 

● 스레드 제어

- start() 메소드 : 실행 대기 상태

- run() 메소드 : 모두 실행

- stop() : 스레드 즉시 종료 (불안전한 종료를 유발하므로 사용 권장하지 않음)

- sleep() : 일정 시간 중지 후 대기 상태로 전환

 

● 컬렉션 프레임워크 : 자료구조를 사용해서 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 java.util 패키지에서 제공하는 것

(컬렉션 : 객체의 저장 / 프레임워크 :  사용 방법을 정해놓은 라이브러리)

 

* 주요 인터페이스 : 컬렉션 클래스를 사용하는 방법을 정의한 것,  (add() : 객체 추가, remove() : 객체 삭제, 검색)

○ List 컬렉션 : 배열과 비슷하게 객체를 인덱스로 관리, 객체 저장 시 자동 인덱스 부여됨(객체의 저장 순서 유지),

객체의 번지를 참조하는 형식으로 동일한 객체 중복 저장 (동일 번지 참조)

ex) ArrayList : List 인터페이스의 대표적인 구현 클래스, 0번 인덱스부터 차례대로 저장

List<String> list = new ArrayList<String>();	// E타입 파라미터 생략 시 왼쪽 타입 따라감

 

○  Set 컬렉션 : 저장 순서가 유지되지 않음, 객체를 중복해서 저장할 수 없고 하나의 null만 저장할 수 있음, 인덱스로 관리하지 않는다.

ex) HashSet : 순서 없이 저장, 중복 저장 하지 않음

Set<E> set = new HashSet<E>();

 

○  Map : 키(key)와 값(value)으로 구성된 Map, Entry(중첩 인터페이스) 객체를 저장하는 구조,

키는 중복 저장될 수없지만, 값은 중복 저장될 수 있다. (기존에 동일한 키로 값을 저장 시 새로운 값으로 대체)

ex) HashMap : 대표적인 map컬렉션, 키로 사용할 객체는 hashCode()와 equals() 메소드를 재정의하여 조건을 정해야 함 (키의 중복저장을 막기 위함)

Map<String, Integer> map = new HashMap<>();		// 파라미터 생략 시 왼쪽 map에 지정된 타입을 따라감

 

ex) Hashtable : HashMap과 동일한 내부 구조, 차이점은 하나의 스레드가 실행을 완료해야만 다른 스레드가 실행할 수 있다 (멀티 스레드 환경에서 안전하게 추가 삭제 가능)

Map<String, Integer> map = new Hashtable<>(); // 파라미터 생략 시 왼쪽에 지정된 타입을 따라감

 


 

[ 참고 : 혼자 공부하는 자바(https://www.hanbit.co.kr/store/books/look.php?p_code=B6700167549) ]