버터감자
오늘도 내 하루는
버터감자
전체 방문자
오늘
어제
  • 분류 전체보기 (139)
    • 🏃‍♀️ Do it ! (80)
      • TIL (73)
      • Project (5)
      • Certificate (2)
    • 📓 TechNote (52)
      • RPA (1)
      • Python (2)
      • JAVA (13)
      • Spring (11)
      • SQL (7)
      • Git & GitHub (6)
      • CS (0)
      • HTML & CSS & JavaScript (2)
      • Tools (9)
      • API (1)
    • 🔔 Error (7)
      • Error (7)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • final필드
  • 만들기
  • 세션
  • 변수
  • 스프링
  • 배열
  • dml
  • 코틀린
  • 포트폴리오
  • 함수
  • 버블소트
  • opacity
  • sqld
  • SQL
  • 게시판
  • callback
  • 데이터베이스
  • 스택
  • 홈페이지
  • 오라클
  • 큐
  • 이것이자바다
  • foreach
  • 문제풀이
  • 안드로이드
  • 이클립스
  • 기본쿼리
  • 부트스트랩
  • 톰캣
  • 객체지향

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
버터감자

오늘도 내 하루는

스레드 그룹 / 스레드폴 / 컬렉션 프레임워크
🏃‍♀️ Do it !/TIL

스레드 그룹 / 스레드폴 / 컬렉션 프레임워크

2022. 9. 27. 16:37
728x90

2022 / 9 / 27 화

  • 스레드 그룹
  • 스레드폴
  • 컬렉션 프레임워크

✔ 스레드 그룹

스레드 그룹

- 관련된 스레드를 묶어 관리할 목적으로 이용된다.

- 스레드 그룹은 계층적으로 하위 스레드 그룹을 가질 수 있다. 

- 스레드는 반드시 하나의 스레드 그룹에 포함되는데, 스레드 그룹을 지정하지 않으면 기본적으로

  자신을 생성한 스레드와 동일한 스레드 그룹에 속하게 된다. 

public static void main(String[] args) {
	AutoSaveThread autoSaveThread = new AutoSaveThread();
	autoSaveThread.setName("AutoSaveThread"); // 스레드이름
	autoSaveThread.setDaemon(true); // 데몬스레드(보조기능 스레드)
	autoSaveThread.start(); // start작업전 스레드의 속성을 먼저주자.
		
	// 프로세스 내 실행하는 모든 스레드에 대한 정보를 얻을 수 있다. 
	Map<Thread, StackTraceElement[]> map = Thread.getAllStackTraces();
	Set<Thread> threads = map.keySet();
	for(Thread thread : threads) {
		System.out.println("Name : " + thread.getName() + ((thread.isDaemon())? "(데몬스레드)" : "(주스레드)"));
		System.out.println("\t" + "소속그룹:" + thread.getThreadGroup().getName());
		System.out.println();
	}
		
}


✔ 스레드폴

스레드폴?

- 작업 처리에 사용되는 스레드를 제한된 개수만큼 정해놓고,

  작업 큐에 들어오는 작업들을 스레드가 하나씩 맡아 처리한다. 

- 작업 처리가 끝난 스레드는 다시 작업 큐에서 새로운 작업을 가져와 처리한다.

 

스레드가 폭증한다면?

- 병렬 작업 처리가 많아지게 된다면, 스레드 개수도 증가되며 cpu가 바빠져 메모리 사용량이 늘어난다. 

- 결과적으로 프로그램의 성능이 저하된다!

 

스레드폴 생성 방법

Executors 클래스의 두 가지 메소드 중 하나를 사용하여 생성한다.

메소드명 초기 스레드 수 코어 스레드 수 최대 스레드 수
newCachedThreadPool( ) 0 0 Integer.MAX_VALUE
newFixedThreadPool(int nThreads) 0 nThreads nThreads

✔ 컬렉션 프레임워크

컬렉션?

요소(객체)를 수집하여 저장

 

product객체를 효율적으로 추가, 검색, 삭제하는 가장 간단한 방법은 배열을 이용하는 것 !

 

❗ but 배열의 문제점 ❗

1. 쉽게 생성하고 사용이 가능하지만, 저장 가능 객체 수가 배열을 생성할 때 결정되기에 

   불특정 다수의 객체를 저장하기에는 문제가 있다.

2. 객체를 삭제했을 때 해당 인덱스가 비게 되며 마치 이빨 빠진 옥수수가 될 수 있다. 

 

컬렉션 프레임워크 (Collection Framework)

위와 같은 문제점을 해결하기 위해 객체들을 효율적으로 추가, 검색, 삭제할 수 있도록 제공되는 컬렉션 라이브러리이다.

주요 인터페이스
특징 구현 클래스
Collection List 순서를 유지하고 저장
중복 저장 가능
ArrayList, Vector
LinkedList
Set 순서를 유지하지 않고 저장
중복 저장 안됨
HashSet, TreeSet
Map 키와 값의 쌍으로 저장
키는 중복저장 안됨
HashMap, Hashtable
TreeMap, Properties

리스트 컬렉션 (List Collection)

객체를 일렬로 늘어놓은 구조를 가진다.

객체를 인덱스로 관리하며 중복해서 객체를 저장할 수 있다.

 

List 컬렉션에는 ArratList / Vector / LinkedList 가 있다. 

// 배열
// 배열선언 및 생성시 정한 크기를 벗어나면, 예외발생
// 데이터 타입이 정해져있으므로, 다른 데이터 타입은 사용불가능하다. 형변화는 제외
int[] arr = new int[3]; //int형 기억장소 12바이트가 연속적으로 힙영역에 생성
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
		
arr[1] = 0; //기억장소 제거는 불가능, 값만 변경가능

// 컬렉션. JDK에서 많은 클래스로 제공  java.util패키지 제공
ArrayList al = new ArrayList(); //힙영역의 컬렉션 기억장소 생성
al.add(1);
al.add(2);
al.add(3);
al.add(4);
		
// 컬렉션 기억장소의 특징은 데이터를 메모리가 허용되는 한 데이터를 계속 추가할 수 있다.
// 추가시 메모리 자동생성

ArrayList

ArrayList를 생성하기 위해서는 다음과 같이 생성할 수 있다. 

List <String> list = new ArrayList <String> ( );

<  > 안에 원하는 객체 타입을 타입 파라미터로 표기한다. 

ex) <String> / <Integer>

 

Vector

Vector는 ArrayList와 동일한 내부 구조를 갖는다. 

List <  > list = new Vector <  > (  ); 

 

LinkedList

List < > list = new LinkedList < > ( );

LinkedList는 ArrayList와 사용 방법은 똑같지만, 내부구조는 완전 다르다.

ArrayList 내부 배열에 객체를 저장하여 인덱스로 관리
LinkedList 인접 참조를 링크해서 체인처럼 관리

 

'🏃‍♀️ Do it ! > TIL' 카테고리의 다른 글

제네릭 / 멀티 타입 파라미터 / 제네릭 메소드 / 버블 소트  (0) 2022.09.30
Set 컬렉션 / Map 컬렉션 / 이진 트리 / 스택 & 큐  (0) 2022.09.28
스레드 상태 / 데몬 스레드  (0) 2022.09.26
프로세스 / 스레드 / 동기화 메소드, 동기화 블록  (0) 2022.09.23
Date , Calendar 클래스/ Format 클래스 / java.time 패키지  (1) 2022.09.22
    '🏃‍♀️ Do it !/TIL' 카테고리의 다른 글
    • 제네릭 / 멀티 타입 파라미터 / 제네릭 메소드 / 버블 소트
    • Set 컬렉션 / Map 컬렉션 / 이진 트리 / 스택 & 큐
    • 스레드 상태 / 데몬 스레드
    • 프로세스 / 스레드 / 동기화 메소드, 동기화 블록
    버터감자
    버터감자
    🌱 새싹 개발자의 코딩 블로그 🌱

    티스토리툴바