Ưu đãi trong tuần: Nhập mã UD50 giảm 50k cho đơn từ 300k!
Trang chủ
Menu

Concurrency, Multithreading and Parallel Computing in Java

Lập trình Đa luồng, Đồng thời và Tính toán Song song trong Java

Lập trình Đa luồng, Đồng thời và Tính toán Song song trong Java

Đa luồng và Đồng thời, Tính toán Song song và MapReduce trong Java + Fork-Join và Stream API, Virtual Threads

4.6
(3,809 đánh giá)
29,051 học viên
Giảng viên
Holczer Balazs
Phụ đề Việt chất lượng cao Phụ đề tiếng Anh Bán chạy Đánh giá cao
50.000đ 349.000đ -86%
✓ Xem giỏ hàng và thanh toán
Bao gồm phụ đề tiếng Việt, tiếng Anh
14.5 giờ video
146 bài giảng
12 bài quiz
Truy cập vĩnh viễn
Học trên mọi thiết bị
Cập nhật: 30/05/2026

Bạn sẽ học được gì

Hiểu nguyên lý cơ bản về đồng thời
Hiểu nguyên lý cơ bản về đa luồng
Hiểu xử lý song song
Có thể áp dụng các khái niệm vào tình huống thực tế
Hiểu về concurrent collections
Hiểu về đồng bộ hóa và khóa
Hiểu về Fork-Join Framework
Hiểu về Stream API

Yêu cầu

Java cơ bản (kế thừa, lập trình hướng đối tượng)

Đối tượng phù hợp

Khóa học này dành cho sinh viên muốn nắm vững đa luồng trong Java hoặc chỉ muốn ôn tập nhanh

Nội dung khóa học

17 phần • 135 bài giảng
1 Giới thiệu
1 Cài đặt Java JDK 23
2 (TÙY CHỌN!!!!) Cài đặt IntelliJ
1 Phần Đa luồng
1 Giới thiệu về tiến trình và luồng
2 Thuật toán time-slicing là gì?
3 Lợi ích của đa luồng
4 Nhược điểm của đa luồng
5 Vòng đời của luồng
1 Xử lý tuần tự
2 Khởi chạy luồng - Runnable
3 Khởi chạy luồng - Lớp Thread
4 Giao diện Runnable và lớp Thread
5 Chờ luồng kết thúc - join
6 Hiển thị tất cả luồng trong JVM
7 Đa luồng có nhanh hơn thực thi tuần tự không?
8 Luồng daemon và luồng người dùng
9 Độ ưu tiên luồng và Java Thread Scheduler
1 Quản lý bộ nhớ của luồng
2 Đồng bộ hóa
3 Vấn đề với đồng bộ hóa
4 Khối đồng bộ và đối tượng tùy chỉnh
5 Khóa cấp đối tượng và khóa cấp lớp
6 Re-entrant locks là gì?
7 Wait và notify
8 Sự khác biệt giữa wait và sleep là gì?
9 Producer và consumer
10 Tại sao nên dùng vòng lặp while với wait()?
11 Giới thiệu Locks và ReentrantLocks
12 Ví dụ về Locks
13 Producer consumer với locks
14 Locks và đồng bộ hóa
1 Giới thiệu deadlock và livelock
2 Ví dụ về deadlock
3 Ví dụ về livelock
4 Volatile
5 Dừng một luồng
6 Biến atomic
7 Semaphores là gì?
8 Mutexes và semaphores
9 Ví dụ về semaphores
10 Mutex và binary semaphore
1 Tại sao nên dùng thread pools?
2 Ví dụ Executors - SingleThreadExecutor
3 Ví dụ Executors - FixedThreadPools
4 Ví dụ Executors - ScheduledExecutor
5 Dừng executors
6 Giao diện Callable và đối tượng Future là gì?
7 Ví dụ Callable và future
1 Collections framework là gì?
2 Đồng bộ hóa collections
3 Latch
4 Cyclic barrier
5 Blocking queue - ArrayBlockingQueue
6 Blocking queue - LinkedBlockingQueue
7 Delay queue
8 BlockingPriorityQueue
9 Concurrent maps
10 Concurrent maps - slipping conditions
11 Exchanger
12 CopyOnWriteArrays
1 Bài toán triết gia ăn tối I - vấn đề
2 Bài toán triết gia ăn tối II - hằng số
3 Bài toán triết gia ăn tối III - đũa
4 Bài toán triết gia ăn tối IV - triết gia
5 Bài toán triết gia ăn tối V - khởi chạy luồng
6 Bài toán triết gia ăn tối VI - chạy mô phỏng
1 Mô phỏng thư viện sinh viên I - vấn đề
2 Mô phỏng thư viện sinh viên II - hằng số
3 Mô phỏng thư viện sinh viên III - sách
4 Mô phỏng thư viện sinh viên IV - sinh viên
5 Mô phỏng thư viện sinh viên V - lock() và tryLock()
6 Mô phỏng thư viện sinh viên VI - chạy mô phỏng
1 Tính toán song song là gì?
1 Giới thiệu merge sort tuần tự
2 Triển khai merge sort tuần tự
3 Merge sort và hình dung bộ nhớ stack
4 Triển khai merge sort song song
5 So sánh thời gian chạy của các triển khai merge sort
6 Giới thiệu bài toán tính tổng
7 Bài toán tổng - cách tiếp cận tuần tự
8 Bài toán tổng - triển khai song song
9 So sánh thời gian chạy của phép tính tổng
10 Định luật Amdahl
1 Fork-join framework là gì?
2 Ví dụ đơn giản với Fork-join framework - RecursiveAction
3 Bài tập - in số nguyên
4 Lời giải - in số nguyên
5 Ví dụ đơn giản với Fork-join framework - RecursiveTask
6 Bài tập - số Fibonacci
7 Lời giải - số Fibonacci
8 Tối ưu hóa luồng
9 Tìm giá trị lớn nhất - thuật toán
10 Tìm giá trị lớn nhất - chạy ứng dụng
11 Ôn tập merge sort I
12 Ôn tập merge sort II
1 Stream API là gì?
2 Streams với số
3 Streams với chuỗi
4 Collections và streams
5 Streams với đối tượng tùy chỉnh - phần 1
6 Streams với đối tượng tùy chỉnh - phần 2
7 Bài tập - lọc
8 Lời giải - lọc
9 Vòng lặp ngoài và vòng lặp trong
10 Xử lý tệp với streams
11 Short-circuiting và loop fusion
12 map() và flatMap()
13 Bài tập - ánh xạ
14 Lời giải - ánh xạ
15 groupingBy()
16 groupingBy() với flatMap()
17 partitioningBy()
18 Optionals và các khái niệm quan trọng khác
19 OptionalInt, OptionalFloat và OptionalDouble
20 allMatch(), noneMatch(), findFirst() và findAny()
21 Song song hóa - ví dụ #1
22 Song song hóa - ví dụ #2
23 Song song hóa - ví dụ #3
1 Virtual threads là gì?
2 Hiểu virtual threads và OS threads
3 Tạo virtual threads
4 So sánh: platform threads vs virtual threads
5 Sử dụng ExecutorService để tạo virtual threads
6 Virtual thread pinning
7 Hiểu về Futures
8 Hiểu về CompletableFutures I
9 Hiểu về CompletableFutures II
10 Structured concurrency là gì?
11 StructuredTaskScope và Subtask
12 ShutdownOnFailure
13 ShutdownOnSuccess
14 Continuations và coroutines
15 Mở rộng quy mô với virtual threads
1 Tài liệu khóa học

Giới thiệu khóa học

Welcome to your journey into the world of multithreading, concurrency, and parallel computing in Java — skills that are essential in today’s high-performance computing era!

In the age of Big Data, Machine Learning, and multi-core processors, understanding how to write efficient, thread-safe, and scalable applications is more important than ever. Whether you're building real-time systems, backend services, or distributed applications, this course will equip you with the tools and mindset to think concurrently.

We’ll start from the foundations — what threads are, how they work, and how to manage them — and steadily progress to advanced topics like parallel algorithms, the Fork-Join framework, and cutting-edge features like Virtual Threads introduced in Java's Project Loom.

Throughout the course, you’ll implement real-world simulations (like the classic Dining Philosophers and Library Student problem), gain hands-on experience, and learn to leverage Java’s concurrency libraries like a pro.


Section 1 - Multithreading Theory:

  • theory behind multithreading

  • pros and cons of multithreading

  • life cycle of a thead

Section 2 - Threads Manipulation:

  • starting threads (Runnable interface and Thread class)

  • join keyword

  • daemon threads

Section 3 - Inter-Thread Communication:

  • memory management of threads

  • synchronization and synchronized blocks

  • locks

  • wait and notify

  • producer-consumer problem and solution

  • concurrent collections

  • latch, cyclic barrier and blocking queues

  • delay queue, priority queue and concurrent maps

Section 4 - Multithreading Concepts:

  • volatile keywords

  • deadlocks and livelocks

  • semaphores and mutexes

  • dining philosophers problem

  • library application

Section 6 - Executors and ExecutorServices:

  • executors

  • executor services

Section 6 - Concurrent Collections:

  • synchronization with Collections

  • latches

  • cyclic barriers

  • delay and priority queues

  • concurrent HashMaps

  • CopyOnWriteArrayLists

Section 7 -  Simulations:

  • dining philosophers problem

  • library problem

Section 8 - Parallel Algorithms:

  • what is parallel computing

  • parallel merge sort

  • parallel algorithms

Section 9 - Fork-Join Framework

  • Fork-Join framework

  • maximum finding in parallel manner

Section 10 - Stream API

  • the Stream API explained with examples

  • map, flatMap, filtering, intermediate and terminal operations

  • sequential streams and parallel streams

Section 11 - Virtual Threads

  • platform threads and virtual threads

  • understanding virtual thread creation and operations

  • StructuredTaskScope and Subtask

  • delimited continuation


Why Take This Course?

Learn practical, hands-on skills to build robust, concurrent Java applications
Stay up to date with modern Java features, including Virtual Threads
Improve your ability to design thread-safe and scalable codeBuild real simulations to apply what you learn immediately

Whether you're a beginner or someone brushing up on concurrency, this course will challenge and empower you to think differently about performance and scalability.

Join now and unlock the power of modern multithreaded programming in Java!
Let’s dive in and write code that truly scales.

Khóa học liên quan

Khám phá thêm các khoá học cùng chủ đề

Hiển thị tất cả khoá học Concurrency
Hiển thị tất cả khoá học Java Programming
Hiển thị tất cả khoá học Multithreading
Hiển thị tất cả khoá học Software Development
Zalo
Tôi có thể tư vấn khoá học cho bạn 😊