채널톡 아이콘

기초 탄탄! 독하게 시작하는 Java Part 3(상) : 멀티스레드와 동기화

초보탈출 비기 공개! Java 멀티스레드 프로그래밍과 동기화 기법에 대해 제대로 알려드립니다!

Thumbnail

중급자를 위해 준비한
[프로그래밍 언어, Java] 강의입니다.

이런 걸 배울 수 있어요

  • Java기반 멀티스레드 프로그래밍 기법

  • Java 메모리 모델과 동기화 메커니즘과 JVM 구조

  • 고성능 Lock-free 큐를 구현하는 방법

멀티스레드 프로그래밍과 동기화 기법에 대해 전공자 수준의 높은 이해를 얻을 수 있습니다.
개발자의 경쟁력은 오직 실력입니다. 이 강의로 확실히 차별화된 경쟁력을 확보하세요!

'Java 메모리 모델'까지
깊게 다루는 이유 🤔

이 강의를 제대로 끝낸다면
전공자에 비견할 수 있는 높은 이해를 바탕으로
Java를 활용 할 수 있습니다.

멀티스레드 프로그래밍과 동기화

한 프로그램에서 여러 스레드를 하고 동시에 운영하는 방법 및 동기화 기법에 대해 배웁니다. synchronized 예약어를 이용한 단순한 방법부터 JVM 내부 구조에 따른 특성까지 깊게 제대로 배웁니다.

JMM(*Java Memory Model)

Java 멀티스레드 환경에서 메모리 영역은 은 Working 메모리와 Main 메모리 영역으로 구분해 관리됩니다. 이 과정에서 동기화에 실패 할 경우 발생할 수 있는 문제는 무엇이며 어떤 원리로 대응 할 수 있는지 전공자 수준으로 이해 할 수 있습니다.

CAS와 Lock-free

CPU 수준에서 제공하는 CAS(Compare And Swap) 명령을 활용해 스위칭 오버헤드가 없는 고성능 동기화 기법을 배웁니다. 나아가 Lock-free Queue 구조를 직접 구현하고 제어 할 수 있습니다.

제네릭과 컬렉션 프레임워크

ADT를 넘어 자료형에 대한 의존성을 극단적으로 낮춘 제네릭에 대해 배웁니다. 이 제네릭을 이용해 재사용성이 극대화된 클래스를 작성할 수 있고 컬렉션 프레임워크에도 제대로 활용 할 수 있습니다.

※여기서 잠깐! JVM이란?
JVM(Java Virtual Machine)은 자바 프로그램을 컴퓨터에서 실행할 수 있도록 도와주는 가상의 컴퓨터입니다.

학습 대상


코드만 지겹게 따라 치고
머리 속에 남는 게 없다고 느껴본 프로그래밍 입문자


백엔드 개발자로
취업하고 싶은 취업 준비생


많이 쓰는 언어라고 해서
배웠지만 본질을 잘 모르는
1~2년차 주니어 개발자

학습 로드맵 🏃🏻

독하게 시작하는 Java 시리즈는 총 4개 Part 로 이루어집니다.
별도 1,2 강의는 Spring 백엔드 개발자로 성장하기 위해 함께 들으면 좋은 강의입니다 🙂

  • Part 1 : 기초적인 문법, 절차적 프로그래밍

  • Part 2 : 객체지향 프로그래밍 + 자료구조

  • Part 3 : 시스템 활용 프로그램 작성

  • Part 4 : Spring Framework으로 넘어가기 위한 준비

  • 별도 1 : 웹 인프라 기술에 대한 이해와 DB

  • 별도 2 : SQL 고급


Part 3멀티스레드 프로그래밍과 동기화 기법, CAS(Compare And Swap, Set), Lock-free 구조, 파일 입/출력, 소켓 프로그래밍 등 고급 개발자가 되기 위해 반드시 알아야 할 내용들이 다수 포함되어 있습니다. 다루는 내용이 너무 많아 상, 하편으로 구분되어 있으며 상편에서는 Java Memory Model과 JVM에 대한 이해를 바탕으로 멀티스레드 기반 프로그래밍 기법을 깊이 있게 다룹니다.

스레드 동기화에 관한 각종 문법들이 JVM 내부에서 어떤 원리로 작동하는지 구체적으로 배울 수 있으며 경쟁 조건하에 발생할 수 있는 각종 이상현상이나 논리적 오류에 대해 대응할 수 있는 확실한 기반을 다질 수 있습니다.

이 강의를 듣고 나면...

  • 멀티스레드 환경과 관련해 JVM(Java Virtual Machine)과 JMM(Java Memory Model)이 어떻게 작동하는지 원리를 이해할 수 있습니다. 이를 바탕으로 동기화 실패에 따른 문제에 직접 대응 할 수 있는 실력을 갖출 수 있습니다.

  • synchronized 예약어가 가지고 있는 근본적인 작동원리를 JVM과 더불어 알 수 있고 Monitor lock에 대해 단순 용어가 아닌 원리 관점에서 이해 할 수 있습니다.

  • 고성능 입/출력 시스템을 구현하기 위해 반드시 알아야 할 CAS(Compare And Swap, Compare And Set)를 이용해 Spin lock을 구현하는 방법Lock-free 기반 Queue를 스스로 구현해 활용할 수 있습니다. 이는 중·고급 프로그래밍 기법으로 CS 전공자조차 쉽게 다가가지 못하는 것들입니다.

  • 제네릭 문법과 멀티스레드 환경에서 컬렉션 프레임워크를 적절히 사용하는 방법에 대해 알 수 있습니다.

독하게 시작하는 Java는
그냥 Java 강의가 아닙니다.

1⃣
멀티스레드 환경이
필요한 이유


  • Thread 클래스를 사용하는 것으로 멀티스레드 환경을 만드는 방법과 더불어 왜 멀티스레드 환경이 필요한 것인지 설명합니다.

  • GUI기반 응용 프로그램의 일반적 구조인 Event-loop 구조에 멀티스레드를 적용하는 구체적인 예를 들어 관련 이론을 설명합니다.

  • 아울러 경쟁 조건을 유발하는 자료구조가 존재하게 되는 이유에 대해서도 알아 봅니다.


2⃣
동기화에 관한 JVM
내부와 Lock flag


  • synchronized를 비롯해 Lock 기반 동기화 기법을 사용할 경우 JVM 내부에서 어떤 일이 일어나는지 구체적으로 알 수 있습니다.

  • OS수준에서 제공하는 커널 오브젝트가 사용될 경우와 그렇지 않을 경우 등을 구분했을 때 어떤 성능 향상을 기대 할 수 있는지 알 수 있습니다.

3⃣
Java Memory Model로
이해하는 메모리 동기화 이슈


  • JMM(Java Memory Model)에 대해 이해해하고 어떤 동작 특징이 있는지 배웁니다.

  • 각 스레드가 독립적으로 사용하는 Working memory 영역과 JVM 전체에 적용되는 Main memory 간 동기화 문제가 발생하면 어떤 현상이 발생하는지 알 수 있습니다.

  • 메모리 영역간 동기화가 일어는 구체적인 시점과 이유를 알고 적절한 코드를 작성 할 수 있습니다.

4⃣
정리된 교육 자료와 판서 📜


  • 모든 수업 내용은 PPT자료를 기반으로 하지만 마치 화이트보드에 판서를 하는 것처럼 설명이 이어집니다.

  • 이를 통해 수강자는 완성된 하나의 결과만 보는 것이 아니라 구조가 탄생하게 된 배경과 이유 전반에 대한 흐름을 종합적으로 이해 할 수 있습니다.

5⃣
목표는 차별화된 경쟁력과 취업 💼

  • 본격적인 Java 프로그래밍을 배우기에 앞서 본 수업이 취업을 목표로 하고 있음을 명확히 알립니다. 그리고

    강사의 오랜 강의 경험을 근거로 명확한 학습로드맵과 소요시간을 제시합니다.

  • 잘못된 선택으로 시간을 낭비하는 일이 없도록 처음부터 적절한 학습 배분 및 일정을 수립하도록 유도합니다.

6⃣
각종 기법별 구체적인
성능비교결과 제공


  • 멀티스레드 환경에서 반드시 고려해야 하는 동기화 문제와 스위칭 오버헤드에 관한 깊이 다룹니다.

  • 같은 환경에서 각종 동기화 기법을 적용했을 때 얼마나 성능차이가 나는지 구체적인 수치로 보여줍니다.

  • 고성능 Lock-free 구조를 적용하더라도 오히려 효율이 급감하는 상황을 직접 경험할 수 있습니다.

7⃣
Spin lock과

Lock-free 구조 직접 구현 🛠


  • 고성능 시스템 구축을 위해 반드시 알아야 할 CAS(Compare And Swap, Set) 명령을 활용해 스위칭 없이 스레드를 동기화는 기법을 배웁니다.

  • Lock-free Queue를 직접 구현하고 다양한 상황변화를 적용해 어떤 성능 변화가 발생하는지 실험을 통해 알 수 있습니다.

실습 환경

  • 운영 체제 및 버전(OS): Windows 11

  • 사용 도구: IntelliJ IDEA 2024.2.3 (Community Edition)

  • PC 사양: Windows 11 OS 및 IntelliJ가 무리 없이 작동 할 수 있는 수준

학습 자료

  • 수업에 사용된 PPT자료 (PDF파일로 제공)

  • 전체 예제 및 필수실습 문제 정답(Zip 압축 파일로 제공)

선수 지식 및 유의사항

  • '기초탄탄' 독하게 시작하는 Java Part 1~2
    (※ 기초적인 문법이나 OOP에 대해 모두 알고 있다고 가정함)


이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 취업시장에서 차별화된 경쟁력을 얻고 싶은 초급 Java 개발자

  • JVM 내부구조를 바탕으로 깊게 Java를 배우고 싶은 분

  • Java 메모리 모델와 멀티스레드 환경에 대해 깊은 이해를 얻고 싶은 분

  • 중고급 Java 프로그래밍 기법을 배우고 싶은 분

선수 지식,
필요할까요?

  • 독하게 시작하는 Java Part 2 수준의 JVM 내부구조에 대한 이해

  • Java 프로그래밍

안녕하세요
널널한 개발자입니다.

31,570

수강생

1,573

수강평

1,005

답변

4.9

강의 평점

20

강의

널널한 개발자 TV 채널 주인장이자
30년 넘게 IT기술의 바다를 항해하고 있는 개발자 입니다.  반갑습니다. ^^

 

커리큘럼

전체

51개 ∙ (10시간 11분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

전체

4개

5.0

4개의 수강평

  • 더블지

    수강평 22

    평균 평점 4.9

    5

    92% 수강 후 작성

    이번에도 잘 듣고 많이 배웠습니다!

    • 널널한 개발자
      지식공유자

      좋은 평가와 피드백 고맙습니다. 하편도 얼른 준비하겠습니다. :)

  • doomco

    수강평 26

    평균 평점 5.0

    5

    10% 수강 후 작성

  • 별다방

    수강평 10

    평균 평점 4.7

    5

    71% 수강 후 작성

    기다리던 part3 강의입니다. 기다린 보람이 있네요. 양질의 강의 감사합니다. 후딱 듣고 part3-2편 기대하겠습니다!

    • 널널한 개발자
      지식공유자

      좋은 평가와 피드백 고맙습니다. 얼른 하편 준비하겠습니다. :)

  • Js Smz

    수강평 7

    평균 평점 5.0

    5

    31% 수강 후 작성

널널한 개발자님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

비슷한 강의

같은 분야의 다른 강의를 만나보세요!

월 ₩15,400

5개월 할부 시

₩77,000