728x90
반응형
자바 21, 가상스레드 개념을 이해하기 위해 5회차 학습 계획을 설정했다.
초보 개발자 기준으로 이해할 수 있도록 학습 목표를 설정하고, 학습할 예정.
1회차: 동시성 기본 개념 이해
목표: 동시성과 스레드의 기본 원리 이해학습 내용:
- 동시성(Concurrency)과 병렬 처리(Parallelism)의 차이점 학습.
- 기존 자바 스레드의 구조와 문제점 이해.
- Thread 클래스와 Runnable 인터페이스 실습.
실습 과제:
- 여러 스레드로 간단한 작업 분산 처리 프로그램 작성.
- 스레드 풀(ThreadPool)을 활용한 기본적인 작업 큐 생성.
추천 학습 자료:
- "Java Concurrency in Practice" 책의 1장.
- 간단한 유튜브 강의: "Java Threads for Beginners".
2회차: 가상 스레드 이해와 기초 실습
목표: 가상 스레드의 개념과 기본 사용법 익히기
학습 내용:
- 가상 스레드란 무엇인가?
- 기존 스레드와 가상 스레드의 차이점.
- 자바 21의 Thread.startVirtualThread API 사용법.
실습 과제:
- 가상 스레드를 생성하고 동작 비교 실험.
- 100,000개의 가상 스레드와 기존 스레드를 생성하며 메모리와 CPU 사용률 비교.
추천 학습 자료:
- Official Java Virtual Threads Documentation.
- 블로그: "Java 21 Virtual Threads Guide".
3회차: 가상 스레드와 기존 동시성 API 통합
목표: 기존 동시성 API와 가상 스레드의 통합 이해학습 내용:
- ExecutorService를 사용하여 가상 스레드를 관리.
- 기존 동시성 코드에서 가상 스레드로 전환 실습.
- I/O 작업에서의 가상 스레드 활용.
실습 과제:
- Executors.newThreadPerTaskExecutor를 활용한 작업 처리.
- 파일 읽기/쓰기 작업을 가상 스레드로 병렬 처리.
추천 학습 자료:
- 유튜브 강의: "Virtual Threads vs Executors".
- 공식 예제 코드: OpenJDK Virtual Threads GitHub.
4회차: 가상 스레드 심화 학습
목표: 가상 스레드의 한계와 최적화 이해학습 내용:
- 가상 스레드의 동작 원리(JVM 내부 구조).
- 스레드 로컬(ThreadLocal)과 가상 스레드의 관계.
- 가상 스레드의 성능 최적화 방법.
실습 과제:
- 대규모 네트워크 요청 처리 프로그램 작성.
- ThreadLocal이 가상 스레드에서 어떻게 작동하는지 실험.
추천 학습 자료:
- "Understanding JVM for Virtual Threads" 강의.
- 블로그: "Scaling with Java Virtual Threads".
5회차: 실제 프로젝트에 적용
목표: 가상 스레드를 프로젝트에 적용하는 방법 익히기학습 내용:
- REST API 서버에서 가상 스레드 활용(Spring Boot 예제).
- 대규모 데이터 처리 시스템 설계와 가상 스레드 사용.
- 가상 스레드 디버깅 및 성능 모니터링.
실습 과제:
- Spring Boot와 가상 스레드를 사용해 간단한 REST API 서버 구현.
- 애플리케이션 실행 시 성능 모니터링 도구(JConsole, VisualVM)로 가상 스레드 분석.
추천 학습 자료:
- "Spring Boot with Virtual Threads" 튜토리얼.
- 커뮤니티: Stack Overflow 자바 21 질문 검색.
/
개인 학습을 위해 작성하는 글입니다.
웹 서핑을 통해 획득한 정보로 정확하지 않은 정보, 수정이 필요한 정보가 있으면 언제든 말씀해 주세요.
반응형
'Java' 카테고리의 다른 글
자바 비동기 CompletableFuture, ForkJoinPool의 개요 및 사용법 (1) | 2024.12.31 |
---|---|
Java 21 가상스레드(virtual thread) | 01 동시성 기본 개념 이해 (0) | 2024.12.31 |
java CloneNotSupportedException 해결 방법, 발생 예시 (0) | 2024.05.20 |
Object clone() 정의, 활용 (0) | 2024.05.20 |
[JAVA] 방향과 순서가 있는 데이터의 흐름, Stream (0) | 2023.06.02 |
댓글