Solid Foundation! Starting Java Fiercely Part 3 (First Half): Multithreading and Synchronization

Secrets to Escaping Beginner Status Revealed! We'll properly teach you about Java multithreaded programming and synchronization techniques!

(5.0) 6 reviews

320 students

Java
multithread
jvm
lock-free
generic
Thumbnail

This course is prepared for Intermediate Learners.

What you will learn!

  • Java-based multithreading programming techniques

  • Java Memory Model and Synchronization Mechanisms, and JVM Architecture

  • How to Implement a High-Performance Lock-Free Queue

You will gain a deep, expert-level understanding of multithreaded programming and synchronization techniques.
A developer's competitiveness is only based on his or her skills. With this course, you will definitely secure a differentiated competitive edge!

Up to the 'Java memory model'
Why we cover it in depth 🤔

If you finish this lecture properly
Based on a high level of understanding comparable to that of a specialist
You can utilize Java .

Multithreaded programming and synchronization

Learn how to run multiple threads in one program and operate them simultaneously, as well as synchronization techniques. Learn deeply and properly , from simple methods using the synchronized reserved word to characteristics according to the internal structure of the JVM .

JMM(*Java Memory Model)

In a Java multi-threaded environment, memory areas are managed by dividing them into Working memory and Main memory areas . In this process, you can understand at a specialist level what problems can occur when synchronization fails and what principles can be used to deal with them.

CAS and Lock-free

Learn high-performance synchronization techniques without switching overhead by utilizing the CAS (Compare And Swap) instruction provided at the CPU level. Furthermore, you can directly implement and control a lock-free queue structure .

Generics and Collections Framework

Learn about generics , which go beyond ADTs and drastically reduce dependency on data types. You can use these generics to write classes with maximum reusability and make good use of them in the collection framework .

※Wait a minute! What is JVM?
JVM (Java Virtual Machine) is a virtual computer that helps run Java programs on a computer.

Learning Object


Just following the code is boring
A beginner in programming who feels like nothing is left in his head


As a backend developer
Job seekers who want to get a job


Just because it's a widely used language
I learned it but I don't know the essence well
Junior developer with 1~2 years of experience

Learning Roadmap 🏃🏻

The Java series, which starts with a strong focus, consists of four parts.
Separate lectures 1 and 2 are good lectures to listen to together to grow as a Spring backend developer 🙂

  • Part 1: Basic Grammar, Procedural Programming

  • Part 2: Object-oriented programming + data structures

  • Part 3: Writing a System Utilization Program

  • Part 4: Preparing to move to Spring Framework

  • Separate 1: Understanding of Web Infrastructure Technology and DB

  • Separate 2: SQL Advanced


Part 3 contains a lot of content that you must know to become an advanced developer , such as multithreaded programming and synchronization techniques, CAS (Compare And Swap, Set), lock-free structure, file input/output, and socket programming . Since there is so much to cover , it is divided into upper and lower parts, and the upper part goes into depth on multithreaded programming techniques based on an understanding of the Java Memory Model and JVM.

You can learn specifically how various grammars related to thread synchronization work within the JVM and build a solid foundation for responding to various abnormal phenomena or logical errors that may occur under race conditions.

After taking this lecture...

  • You will be able to understand the principles of how the Java Virtual Machine (JVM) and the Java Memory Model (JMM) work in a multi-threaded environment. Based on this, you will be able to directly respond to problems caused by synchronization failures.

  • You can learn the fundamental operating principles of the synchronized reserved word along with the JVM, and understand monitor lock from the perspective of principles rather than simple terms .

  • You will learn how to implement a Spinlock using CAS (Compare And Swap, Compare And Set), which is essential for implementing a high-performance input/output system, and how to implement and utilize a Lock-free based Queue yourself . These are intermediate to advanced programming techniques that even CS majors have difficulty approaching.

  • You will learn about generic syntax and how to properly use the collections framework in a multithreaded environment .

Java starts off strong
This isn't just a Java course.

1⃣
Multi-threaded environment
Why is it needed?


  • Explains how to create a multithreaded environment using the Thread class and why a multithreaded environment is necessary .

  • We explain the related theory by giving a specific example of applying multi-threading to the event-loop structure, which is a general structure of GUI-based applications .

  • We will also learn why data structures that cause race conditions exist.


2⃣
JVM on synchronization
Inside and Lock flag


  • You can see specifically what happens inside the JVM when using lock-based synchronization techniques, including synchronized .

  • You can see what kind of performance improvement you can expect when you distinguish between cases where kernel objects provided at the OS level are used and cases where they are not.

3⃣
With the Java Memory Model
Understanding memory synchronization issues


  • Understand the JMM (Java Memory Model) and learn what its operating characteristics are.

  • You can see what happens when there is a synchronization problem between the Working memory area that each thread uses independently and the Main memory that applies to the entire JVM .

  • Knowing the specific times and reasons why synchronization between memory areas occurs allows you to write appropriate code.

4⃣
Organized teaching materials and boards 📜


  • All class content is based on PPT materials, but explanations are given as if writing on a whiteboard .

  • This allows students to comprehensively understand the flow of the background and reasons for the creation of the structure, rather than just seeing one finished result .

5⃣
The goal is differentiated competitiveness and employment 💼

  • Before learning full-fledged Java programming, I would like to make it clear that this course is aimed at employment . And

    Based on the instructor's extensive teaching experience, a clear learning roadmap and required time are presented .

  • We encourage you to establish a proper study allocation and schedule from the beginning to avoid wasting time with wrong choices.

6⃣
Specific details for each technique
Provide performance comparison results


  • We delve into the synchronization issues and switching overhead that must be considered in a multithreaded environment.

  • It shows in concrete numbers how much performance difference there is when applying various synchronization techniques in the same environment .

  • Even if you apply a high-performance lock-free structure, you can directly experience a situation where efficiency actually decreases sharply.

7⃣
Spin lock and

Direct implementation of lock-free structure 🛠


  • Learn the technique of synchronizing threads without switching by utilizing the CAS (Compare And Swap, Set) instruction, which is essential for building high-performance systems.

  • You can implement a lock-free queue yourself and experiment with various situational changes to see what kind of performance changes occur.

Practice environment

  • Operating System and Version (OS): Windows 11

  • Tools Used: IntelliJ IDEA 2024.2.3 (Community Edition)

  • PC specifications: Windows 11 OS and IntelliJ can run without any problems

Learning Materials

  • PPT materials used in class (provided as PDF file)

  • Complete examples and answers to essential practice problems (provided as a zip file)

Player Knowledge and Notes

  • Java Part 1~2, starting with a solid foundation
    (※ Assuming you know all about basic grammar and OOP)


Recommended for
these people!

Who is this course right for?

  • Entry-level Java developers looking to gain a competitive edge in the job market

  • For those who want to learn Java in depth based on the internal structure of the JVM.

  • For those who want to gain a deep understanding of the Java Memory Model and multithreaded environments.

  • Those who want to learn intermediate to advanced Java programming techniques.

Need to know before starting?

  • Understanding the JVM Internal Structure: Starting Strong with Java Part 2 Level

  • Java Programming

Hello
This is nullnull8537

32,572

Students

1,654

Reviews

1,021

Answers

4.9

Rating

20

Courses

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

 

Curriculum

All

51 lectures ∙ (10hr 11min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

6 reviews

5.0

6 reviews

    $59.40