728x90
20220927(화)
- 목차
- 스레드 그룹
- 스레드풀
- 컬렉션 프레임워크
- List 컬렉션
< 스레드 그룹 >
- 스레드 그룹
관련된 스레드 묶어 관리 목적으로 이용
스레드 그룹은 계층적으로 하위 스레드 그룹 가질 수 있음 - 자동 생성되는 스레드 그룹
- system 그룹: JVM 운영에 필요한 스레드들 포함
- system/main 그룹: 메인 스레드 포함 - 스레드는 반드시 하나의 스레드 그룹에 포함
기본적으로 자신을 생성한 스레드와 같은 스레드 그룹
스레드 그룹에 포함시키지 않으면 기본적으로 system/main 그룹
< 스레드풀 >
- 스레드풀(Thread Pool)
작업 처리에 사용되는 스레드를 제한된 개수만큼 미리 생성
작업 큐(Queue)에 들어오는 작업들을 하나씩 스레드가 맡아 처리
작업 처리가 끝난 스레드는 작업 결과를 애플리케이션으로 전달
스레드는 다시 작업 큐에서 새로운 작업을 가져와 처리 - 스레드풀 동작원리
< 컬렉션 프레임워크 >
- 컬렉션
사전적 의미로 요소(객체)를 수집해 저장하는 것 - 배열과 컬렉션의 기억장소 특징 차이
배열 | 컬렉션 |
동일한 데이타 타입으로 크기를 고정하여, 기억장소를 연속적으로 생성 및 관리 |
JDK에서 많은 컬렉션 기억장소를 생성하는 클래스 제공 |
int[]arr = new int[3]; // 배열크기. 첨자 arr[0] = 10; arr[1] = 20; arr[2] = 30; arr[3] = 40; // 예외발생 // 배열 선언 및 생성 시 정한 크기를 벗어나면 예외발생 |
ArrayList al = new ArrayList(); // 기본 기억장소 생성 al.add(1); al.add(1); al.add(1); al.add(1); al.add(1); al.add(1); // 어느정도까지는 객체 생성시 생성한 기억장소를 사용해서 데이터가 추가 al.add(1); // 기억장소를 동적으로 추가 생성하여, 데이타를 삽입 al.add(1); al.add(1); al.add(1); al.add(1); |
데이터 타입이 정해져 있으므로, 다른 데이터 타입 사용 불가능 (형변환 제외) |
배열의 기억장소 사용 곤란 시, 컬렉션 기억장소 이용. (힙 영역의 컬렉션 기억장소에 생성됨) |
- 컬렉션 프레임워크(Collection Framework)
- 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 제공되는 컬렉션 라이브러리
- java.util 패키지에 포함
- 인터페이스를 통해서 정형화된 방법으로 다양한 컬렉션 클래스 이용
< List 컬렉션 >
- 특징
- 인덱스로 관리
- 중복해서 객체 저장 가능(Set과 반대) - List 컬렉션 메소드
기능 | 메소드 | 설명 |
객체 추가 | boolean add(E e) | 주어진 객체를 맨 끝에 추가 |
void add(int index, E element) | 주어진 인덱스에 객체를 추가 | |
E set(int index, E element) | 주어진 인덱스에 저장된 객체를 주어진 객체로 바꿈 | |
객체 검색 | boolean contains(Object o) | 주어진 객체가 저장되어 있는지 여부 |
E get(int index) | 주어진 인덱스에 저장된 객체를 리턴 | |
boolean isEmpty() | 컬렉션이 비어 있는지 조사 | |
int size() | 저장되어 있는 전체 객체 수를 리턴 | |
객체 삭제 | void clear() | 저장된 모든 객체를 삭제 |
E remove(int index) | 주어진 인덱스에 저장된 객체를 삭제 | |
boolean remove(Object o) | 주어진 객체를 삭제 |
- List 컬렉션 구현 클래스
ArrayList | List<String>list = new ArrayList<String>(); |
저장 용량을 초과한 객체들이 들어오면 자동적으로 늘어남(고정도 가능) 1) Arrays 클래스 : 배열기능을 지원하는 목적으로 제공 2) 향상된 for문 : 배열 또는 컬렉션 사용가능 |
|
Vector | List<E> list = new Vector<E>(); |
Vector는 스레드 동기화(synchronization) 복수의 스레드가 동시에 Vector에 접근해 객체를 추가, 삭제하더라도 스레드에 안전(thread safe) |
|
LinkedList | List<E>list = new LinkedList<E>(); |
데이타 삽입, 삭제시 ArrayList보다 LinkedList가 더 성능이 좋다. - 순차적으로 추가/삭제 : ArrayList > LinkedList - 중간에 추가/삭제 : ArrayList < LinkedList - 검색 : ArrayList > LinkedList |
728x90