목차왜 virtual thread를 many-to-many 모델이라고 부르는가?ForkJoinPool이 내부적으로 어떻게 활용되는가?왜 virtual thread는 기존 플랫폼 스레드보다 메모리 덜 차지하는가?가상스레드를 어느정도로 생성했을 때 위험하며, 어떻게 방지할 수 있는가?virtual thread pool을 설정하지 않는 게 좋은 이유?가상스레드 활용 시 carrier thread(platform thread) 설정은 어떻게 할 것인가?기존 platform thread는 왜 pool로 설정하였는가?virtual thread가 생성 되어지는 위치?virtual thread가 실행 되어지며 갖는 transaction, context는 어떻게 저장 되어져서 다른 carrier thread에서 실행 되..
해결하고자 하는 기존 멀티스레드 방식의 문제점하나의 작업이 실패할 경우 자동으로 일괄 취소할 수 없음(각 수동 예외처리 필요)여러 작업 간의 명확한 관계가 표현되지 않음 Java Structured Concurrency 소개동시성 작업을 부모-자식 관계로 구조화하여 작업 그룹을 하나의 단위로 관리하는 프로그래밍 패러다임오류 처리, 리소스 관리, 취소 기능을 단순화하여 안정적이고 예측 가능한 동시성 코드 작성을 목표로 함여러 스레드 작업들이 작업 완료 시 모두 동일한 위치로 돌아온다는 특징Jdk25 기준으로 5th Preview 상태 장점명확성: 일관된 패턴으로 멀티 스레드 코드 작성 가능예외 처리: 하나의 작업 실패로 다른 작업 취소 용이취소 전파: 상위 작업의 취소로 모든 하위 작업 취소 가능오류 원인..
용어 정리스레드 분류 커널 스레드• OS 커널에 의해 생성되고 관리되는 스레드• OS 스레드, 네이티브 스레드 라고도 불림 유저 스레드• 커널 스레드를 프로그래밍 레벨에서 추상화한 스레드• OS가 관리하는 커널스레드와 매핑되어 동작 스레드매핑모델 many-to-one model• 다수의유저스레드를하나의커널스레드와매핑 one-to-one model• 하나의유저스레드를하나의커널스레드와매핑 many-to-many model• 다수의유저스레드를다수의커널스레드가처리• 별도의스케줄러로관리필요 Java 스레드의 발전 과정Jdk 1.1many-to-one model• CPU Core가 1개인 환경에서 설계된 방식, 그린 스레드라는 명칭의 유저 스레드 사용• 단점: 커널스레드가 Blocking 되면 모든 유저 스레드..
[총 1년 3개월의 취업 준비 기간]2024.04 ~ 2024.12 (9개월 - 쌩신입 취준)2025.01 ~ 2025.02 (인턴 근무)2025.03 ~ 2025.08 (6개월 - 인턴 경험 이후 취준)2025.08 -> 취업 위 기간 동안 꼭 빅테크 기업에 가겠다는 의지(사실상 고집)을 가지고 끝까지 밀어붙인 취준/취업 성공 후기이다.스토리 형식으로 각 기간에 노력한 점 위주로 작성하고자 한다. 1년 3개월이 아닌 4년 반의 노력이 들어간 결과 사실, 취업준비는 아니지만 취업을 위한 노력은 4년 반 이전부터 시작됐다. 대학교 2학년에 들어가는 시점에 코딩 자체가 헷갈려 백준을 풀기 시작했다. 2학년 후반에는 solved ac 기준 골드2가 되었다. 이 과정에서 많은 변화가 있었다. 1. 학교에서의 코..
GitHub: https://github.com/ohksj77/api-gateway GitHub - ohksj77/api-gateway: 직접 라우팅을 구현하며 api-gateway를 만들어보자직접 라우팅을 구현하며 api-gateway를 만들어보자. Contribute to ohksj77/api-gateway development by creating an account on GitHub.github.com전체 코드는 위 Repository에서 확인할 수 있습니다. 이 포스트에서 전체 구현을 다루지는 않습니다. 들어가며마이크로서비스 아키텍처에서 API Gateway는 모든 클라이언트 요청의 진입점 역할을 하며, 라우팅, 로드 밸런싱, 인증, 모니터링 등 다양한 기능을 제공합니다. 이번 포스트에서는 Sp..
GitHub: https://github.com/ohksj77/kgit GitHub - ohksj77/kgit: Kotlin으로 만든 git 프로젝트Kotlin으로 만든 git 프로젝트. Contribute to ohksj77/kgit development by creating an account on GitHub.github.com전체 코드는 위 Repository에서 확인할 수 있습니다. 이 포스트에서 전체 구현을 다루지는 않습니다. 들어가며KGit은 Kotlin으로 구현된 Git 클론 프로젝트입니다. 실제 Git과 유사한 CLI 명령어를 제공하며, Git의 핵심 개념인 객체 모델과 참조 시스템을 구현했습니다. Git 내부 동작을 알아보고자 진행했습니다. 동작 예시 프로젝트 구조kgit/├── src..
GitHub: https://github.com/ohksj77/kmysql GitHub - ohksj77/kmysql: Kotlin으로 만든 MySQL 프로젝트Kotlin으로 만든 MySQL 프로젝트. Contribute to ohksj77/kmysql development by creating an account on GitHub.github.com 👋🏻 들어가며이전에 응시한 면접에서 이러한 질문을 받은 적이 있습니다.“직접 DB를 구현한다면 어떻게 Repeatable Read를 구현하고 싶으신가요?” 당시 질문을 받은 후 추상적인 생각들만 겉돌며 당황한 기억이 있습니다.이러한 계기로 언젠가는 간단하게라도 DBMS를 구현해보고 싶은 욕구가 생겼고, 이를 실제로 구현해봤습니다. 기술 스택: Kotl..
2025.01 ~ 2025.02 두 달간의 인턴십 전반의 느낌과 배운 점에 대한 회고를 작성하고자 한다. 정규직 전환이 되었는가체험형 인턴이라고 해도 궁금해할 만한 전환을 먼저 언급하자면 전환은 되지 않았다. 하지만, 이유가 내게 있지는 않았다. 처음부터 전환을 전제로 하지 않기도 했다. 인턴 마무리 시점에 받은 평가는 과분할 정도로 정말 좋게 받았다. 특히 기술적인 항목들은 받을 수 있는 가장 높은 점수를 받는 등 전반적으로 좋은 점수를 받았던지라 아쉬웠다. 개발 작업 도중에 마음에 들어 하셨다는 점을 직접적으로 알 수 있기도 했다. 체험형 인턴이었던 점에도 불구하고 팀에서 전환을 위해 알아봐 주셨지만 팀 사정상 아쉽게 되었다. 적응과 전반적인 부분에 도움을 주신 멘토님과 버디님께서 이런 점을 전달하며..