Skip to content

지찬우 2주차 학습 정리

지찬우 edited this page Aug 5, 2024 · 1 revision

자바의 스레드

Green Thread Model

  • 기본 OS 지원 없이 JVM에 의해 완전히 관리
  • 애플리케이션 수준에서 구현되고 사용자 공간에서 관리
  • 한 번에 하나의 그린 스레드만 처리 가능(N:1 모델) - 멀티코어 프로세서에서 실행 가능하지만 여러 코어를 활용할 수는 없다.
  • 동기화 및 리소스 공유가 더 쉬워 실행 시간 짧음

운영체제 스레드에 직접 매핑되지 않고 기본 아키텍처가 스레드 자체를 관리하며, 이것이 운영체제 스레드에 매핑되는 방식을 관리???

네이티브 스레드는 시작 및 중지에 많은 비용이 필요.(오래 실행되는 스레드를 사용하는 경우 네이티브 스레드가 매우 효율적)

일반적으로 여러 네이티브 스레드를 실행한 후에 다음 실행을 위해 그린 스레드를 네이티브 스레드에 할당해 작동

더이상 지원하지 않음. 아래의 Native Thread Mode

Native Thread Model

모든 JVM 언어를 포괄하는 Java의 표준 스레딩 모델은 네이티브 스레드를 사용 - Java 1.2부터 적용(JVM이 실행되는 기본 시스템과는 무관)

Java의 표준 스레딩 메커니즘(java.lang.Thread, java.util.concurrent.Executor, java.util.concurrent.ExecutorService 등)을 사용할 때마다 native thread를 사용

  • 기본 OS 지원의 도움을 받아 JVM이 관리
  • OS 수준에서 구현(OS 멀티 스레딩 API를 사용)되며 커널 공간에서 관리
  • 여러 네이티브 스레드가 공존 가능(N:M 모델) - 멀티코어 프로세서를 최대한 활용하고 별도의 개별 코어에서 스레드를 동시에 실행 가능
  • 여러 스레드가 동시에 실행될 수 있어 스레드 동기화와 리소스 공유가 복잡 → 스레드 실행 시간 증가

Fibers

멀티 스레딩의 대체 형태이며 그린 스레드와 유사하다.

파이버는 협력적 멀티 태스킹의 한 형태로, 실행 중인 스레드가 다른 스레드에 양보할 수 있다는 신호를 보낼 때까지 계속 실행

Project Loom

OpenJDK 프로젝트에서 애드온 라이브러리가 아닌 JVM 자체에 파이버를 추가하는 프로젝트

참고
Green vs Native Threads and Deprecated Methods in Java - GeeksforGeeks
Threading Models in Java | Baeldung


MIME 타입

Multipurpose Internet Mail Extensions, 문서, 파일 또는 바이트 집합의 성격과 형식을 나타낸다. RFC 6838에 정의 및 표준화

구조

type/subtype
  • type: video 또는 text와 같이 데이터 타입이 속하는 일반 카테고리
  • subtype: MIME 타입이 나타내는 지정된 타입의 정확한 데이터 종류를 식별. 예를 들어, MIME 타입 text의 경우 하위 타입은 plain(평문 텍스트), html(HTML 소스 코드) 또는 calendar(iCalendar/.ics 용)

추가 세부정보 제공을 위해 선택적으로 매개변수를 추가할 수 있다.

type/subtype;parameter=value

ex. 기본 타입 text MIME 타입의 경우, 선택적 charset 매개변수를 추가해 데이터의 문자에 사용되는 문자 세트를 지정(charset이 지정되지 않은 경우, User-Agent 설정으로 재정의되지 않는 한 기본 값은 ASCII(US-ASCII)이다.

대소문자를 구분하지 않지만, 일반적으로 소문자로 작성. 매개변수 값은 대소문자 구분 가능

타입

  • discrete(개별 타입) - 단일 텍스트나 음악, 비디오 파일이나 매체
  • multipart - 여러 컴포넌트 조각으로 구성된 문서

개별 타입

IANA에 등록된 개별 타입 목록

  • application - 다른 타입 중 하나에 명시적으로 속하지 않는, 모든 종류의 이진 데이터
  • audio - 오디오 또는 음악 데이터
  • example - MIME 타입을 사용하는 방법을 보여주는 예제에서 자리 표시자로 사용되도록 예약
  • font - 글꼴/서체 데이터
  • image - 비트맵과 벡터 정지 이미지를 모두 포함하는 이미지 또는 그래픽 데이터 애니메이션 GIF 또는 APNG와 같은 정지 이미지 형식의 애니메이션 버전
  • model - 3D 객체 또는 화면에 대한 모델 데이터
  • text - 사람이 읽을 수 있는 콘텐츠, 소스 코드 또는 쉼표로 구분된 값(CSV) 형태 데이터와 같은 텍스트 형식의 데이터
  • video - MP4 영화와 같은 비디오 데이터 또는 파일

Multipart 타입

일반적으로 다른 MIME 타입들을 지닌 개별적인 파트들로 나누어지는 문서의 그룹을 나타낸다.

HTML Forms의 POST 메서드에서 사용되는 multipart/form-data와 문서 일부분을 보내기 위해 206 PartialContent를 사용하는 multipart/byteranges를 제외하면, HTTP는 다중부분 문서를 특별한 방식으로 처리하지 않는다.

참고
Common MIME types - HTTP | MDN

👼 개인 활동을 기록합시다.

개인 활동 페이지

🧑‍🧑‍🧒‍🧒 그룹 활동을 기록합시다.

그룹 활동 페이지

🎤 미니 세미나

미니 세미나

🤔 기술 블로그 활동

기술 블로그 활동

📚 도서를 추천해주세요

추천 도서 목록

🎸 기타

기타 유용한 학습 링크

Clone this wiki locally