멀티스레드의 필수(기초)이론부터 심화주제까지!
JAVA의 병행성 및 성능 최적화!
반응형 애플리케이션, 멀티스레드 관련 구축 업무 등의 전문가에게 적합한 강의!
Java 멀티스레딩, 병행성 및 성능 최적화 강의를 선택해야 하는 이유
만약 여러분께 전용 제트기가 있다면, 그 제트기를 몰고 마트에 가실 건가요, 아니면 전세계 투어를 떠나실 건가요?
오늘날의 모든 컴퓨터와 휴대폰은 완벽하게 동시 병렬 실행을 가능하게 해 주는 엄청난 컴퓨팅 능력과 여러 개의 코어를 갖춘 채 출시됩니다. 이 과정에서는 자신감 넘치고 성공적인 멀티스레드 애플리케이션 개발자가 되기 위해 필요한 모든 기본적인 도구를 배울 수 있는 여정을 떠나게 됩니다. 멀티스레딩과 병행성을 이용해서 컴퓨터의 기능을 제대로 활용하는 법을 배우고 컴퓨터가 맘껏 날개를 펼치게 해 주세요!
[ 교육 철학 ]
이 과정은 여러분이 '낚시하는 법'을 직접 배울 수 있도록 설계되어 있습니다. 클래스, 라이브러리 또는 Java API를 암기하는 대신에, 멀티스레드 프로그래밍의 필수적인 내용을 아주 기본적인 수준부터 시작해서 멀티스레딩 관련 심화 주제까지 배워 볼 예정입니다.
모든 강의에는 적합한 이론이 소개되고, 또 다음과 같은 관련 필드에 대한 실용적인 예시도 함께 제공됩니다.
[ 강의 과정 ]
이 과정은 여러분의 시간을 절약하게 해 주는 실용적인 과정입니다. 너무 많은 내용으로 여러 시간을 채우는 대신에, 제 실무 경험을 바탕으로 가장 중요한 주제만을 손수 추렸습니다.
사용자 인터페이스 애플리케이션
이미지 처리
웹 애플리케이션
컴퓨팅 프로그램
기타
[ 배우게 될 내용 ]
운영 체제의 기본 내용 및 멀티스레딩과 병행성이 필요한 이유
멀티스레딩의 기본 - Java에서 스레드를 생성하는 방법 및 스레드 간에 소통하는 방법
멀티스레드 병렬 실행 애플리케이션의 성능 관련 고려 사항 및 설계 패턴. 지연 시간 또는 처리량을 최적화하는 방법
Java에서 스레드 간에 데이터를 공유하는 방법. 발생할 수 있는 모든 함정과 어려움 및 솔루션과 모범 사례
반응성과 성능을 향상시킬 수 있는 락이 걸리지 않은 고급 알고리즘 및 데이터 구조
[ 이 과정을 수강하고 나면 할 수 있게 되는 일 ]
Java에서 어떤 목적과 규모에도 부합하고 성능 기준에도 부합하는 제대로 된 반응형 애플리케이션을 쓰는 작업을 합니다.
멀티스레드 애플리케이션, 알고리즘, 라이브러리를 구축하는 데 있어서 모범 사례를 적용합니다.
병행성 및 병렬 실행 프로그래밍에 대한 지식을 쌓아서 취업 면접, 엔지니어로서 수행하는 일일 업무, 개인 프로젝트에 활용합니다.
지금 바로 Java 멀티스레딩, 병행성 및 성능 최적화의 전문가가 되어 보세요!
< 이 과정의 대상 수강생 >
Java 프로그래밍 관련 경험과 기본 지식이 이미 있는 수강생
단시간 안에 멀티스레드 병렬 실행 프로그래밍 및 병행성 기술을 익히려는 수강생
성능 최적화에 관심이 많고 위에 언급된 주제에 대해 견고한 기초 실력을 쌓고 싶은 수강생
갓 졸업한 취업 준비생이든 또는 꿈의 직장을 찾고 있든 간에, 커리어를 한 단계 발전시키려는 수강생
프로그래머로서의 역량을 키우고 능력을 향상시키려는 전문 엔지니어
본인의 프로젝트를 개발하기 위해 효율적인 멀티스레드 코드를 쓰는 법을 배우려는 프리랜서
만약 여기 해당하신다면, 이 과정을 선택하세요.
강의를 들으시고 강의와 관련하여 궁금하신 점은 무엇이든 Q&A에 남기실 수 있지만, 꼭 영어로 남겨주세요. 그래야 답변을 드릴 수 있습니다. :)
- Michael
[ 강사 약력 ]
멀티스레딩과 병행성에 대한 제 열정은 대학 시절에 IBM이 후원하던 확장성이 높은 분산 시스템인 B+ Tree 리서치 프로젝트에 참여하게 되면서 시작되었습니다.
추후에는 Intel에서 컴퓨터 아키텍처 엔니지어로 일했고, 또 다른 회사들에서 소프트웨어 엔지니어로 일하면서 효율적이고 최적화된 멀티스레드 코드를 이용해 교육, 헬스케어, 증강 현실, 애드 테크 분야에서 실시간 영상, 오디오, 데이터를 제공하는 많은 애플리케이션과 기능을 개발했습니다.
현재 저는 수석 소프트웨어 엔지니어이자 소프트웨어 아키텍트입니다. 다양한 수준을 지닌 엔지니어 분들을 훈련하고 멘토링하는 일은 제 업무인 동시에 제가 큰 열정을 지닌 분야입니다.
자주 묻는 질문
- "이 과정을 수강하면 면접 질문에 대비할 수 있을까요?"
네! 이 과정은 전반적으로 멀티스레딩 및 병행성 분야에서 실력을 키우고, 특히 Java 멀티스레딩을 마스터할 수 있도록 하는 데 초점을 맞춘 과정입니다. Java의 스레드에 대한 필수적인 지식뿐만 아니라, Java에서의 락킹과 동기화, 힙과 스택 메모리 조직화 등 면접 질문으로 흔히 나오는 주제도 배울 수 있습니다. 꼭 면접 질문에 특화된 강의에 해당되지는 않고 사실상 면접에서 어떤 질문을 받게 될지는 예상할 수 없지만, 여기서 얻은 지식을 통해 확실히 다른 지원자들과 차별화된 강점을 키우실 수 있을 겁니다.
- "이 과정은 Java의 모든 스레딩 클래스와 API를 다 다루나요?"
아닙니다. 시중에 말 그대로 모든 클래스와 API 항목을 다루는 많은 책과 수강료가 높은 학습 과정이 있는데, 다 마치려면 수개월이 걸립니다. 또한, Oracle도 모든 Java 멀티스레딩 API와 클래스를 다루는 완벽한 수준의 Java 관련 참고 문서를 지원하고 있습니다. 이 과정은 좀 다르답니다! 필드에서 쌓은 다년간의 경험을 바탕으로, 단시간 안에 가장 필수적인 내용을 모두 배울 수 있는 짧은 커리큘럼을 제가 직접 공들여 설계했습니다. 시간 때우기용 강의는 없습니다! 딱 5분이면 스스로 읽어서 익힐 수 있거나 아예 배울 필요조차 없는 주제에 더 이상 시간 낭비를 할 일도 없습니다! 이 과정을 통해 기초를 튼튼히 쌓아서 멀티스레딩과 병행성 분야의 전문가가 될 수 있습니다. 그리고 추후에도 관련 지식을 손쉽게 늘릴 수 있게 될 것입니다.
- "강의를 듣다가 잘 이해가 되지 않거나 질문이 생기면 어떻게 해야 하나요?"
걱정 마세요! 여러분께 도움을 드리기 위해 제가 있는 거니까요! 멀티스레딩은 결코 쉬운 주제가 아니라서 모든 분들이 곧바로 완벽하게 이해하기는 어렵습니다. 모든 강의에는 수강생 분들이 강의 관련 질문이나 전반적인 주제 관련 추가 질문을 할 수 있는 Q&A 섹션이 있습니다. 강사인 제가 시일 내에 모든 질문에 답변을 드려서 여러분이 성공적으로 수강을 마칠 수 있도록 필요한 모든 도구를 지원해 드리겠습니다.
- "이 과정은 프로세스 간 통신과 분산 시스템을 다루나요?"
아니요. 해당 주제들도 병행성과 관련된 아주 흥미롭고 중요한 주제이긴 하지만, 과정의 주요 주제인 Java 멀티스레딩과 직접적으로 관련이 있지는 않습니다. 강의에서 해당 주제를 언급하기는 하지만, 범위를 벗어나는 내용이라 관련 강의 과정을 따로 개설해서 다뤄야 하는 주제에 해당되죠. 그 개념과 사례, 어려운 부분이 하나의 멀티스레드 Java 애플리케이션, 알고리즘, 라이브러리를 성능을 최적화할 때 나오는 것들과는 상당히 다릅니다. 따라서 이 과정에서는 다루지 않습니다.
- "병행성 프로그래밍에 대해 별도의 과정이 필요한 이유는 무엇인가요?"
병행성 프로그래밍은 순차적인 전환성 프로그래밍과는 근본적으로 다릅니다. 따라서 모든 엔지니어링 관련 결정을 내릴 때, 항상 일종의 트레이드 오프가 있기 마련이죠. 동시성 및 병행성 프로그래밍은 애플리케이션의 성능과 반응성 측면에서 엄청나게 긍적적인 영향을 줄 수 있지만, 제대로 구현하기가 훨씬 더 어렵습니다. 이 과정에서는 모든 Java 멀티스레드 애플리케이션을 최대로 활용할 수 있도록 모든 위험 요소, 기술 및 모범 사례를 배우게 됩니다.
-----------
강사 소개
Michael Pogrebinsky | Java 전문가 & 소프트웨어 아키텍트 스페셜리스트
프로페셔널 소프트웨어 엔지니어 | 소프트웨어 아키텍트 | 강사
Michael Pogrebinsky는 풍부한 경험을 가진 소프트웨어 엔지니어이자 소프트웨어 아키텍트입니다.
업계에 종사하는 동안 수많은 주력 제품을 개발했으며 Google, Intel 등의 기업에서 최첨단 기술과 솔루션을 다뤘으며,
실시간 컴퓨팅과 대규모 소프트웨어 시스템이 주력 분야이며 다양한 선도 기업에서 해당 분야의 기술 책임자를 맡았습니다.
또한 특정 프로그래밍 언어나 기술을 넘어서, 핵심 내용을 이해하고 올바른 사고 방식을 기르는 것이 중요하다고 강조합니다.
기술 분야에 대한 열정으로 다른 엔지니어와 학생들의 훌륭한 멘토가 되어주고 있으며, 그가 가진 지식과 경험을 Udemy에 공유하게 된 것을 기쁘게 생각하고 있습니다.