Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
BEST
Programming

/

Back-end

Lập trình đồng thời Java [Lập trình phản ứng Phần 1]

Bạn sẽ tìm hiểu sâu về các cơ chế đồng thời và kỹ thuật đa luồng của Java, đồng thời thu được kiến ​​thức và kỹ năng cần thiết để giải quyết các vấn đề xử lý song song khác nhau mà bạn có thể gặp phải trong thực tế. Bắt đầu với quản lý luồng cơ bản, bạn sẽ tìm hiểu sâu về các kỹ thuật đồng bộ hóa nâng cao, cách sử dụng nhóm luồng và các lớp liên quan đến đồng thời của Java.

(4.9) 49 đánh giá

1,278 học viên

  • leaven
동시성
멀티스레드
concurrent
multithread
synchronisation
asynchronous-programming
Java

Đánh giá từ những học viên đầu tiên

Dịch cái này sang tiếng Việt

  • Hiểu đồng thời Java

  • Tìm hiểu các mẫu đa luồng khác nhau

  • Hiểu các kỹ thuật và loại đồng bộ hóa

  • Lý thuyết và thực hành lập trình không đồng bộ

  • Đặt nền tảng cho lập trình phản ứng

Một phần thiết yếu của môi trường máy tính ngày nay
Lập trình đồng thời!

Với sự phát triển mạnh mẽ của bộ xử lý đa lõi và sự tiến bộ của môi trường điện toán phân tán, lập trình đồng thời trở nên quan trọng hơn bao giờ hết. Java thích ứng với những thay đổi này bằng cách cung cấp các tính năng lập trình đồng thời mạnh mẽ .
Khóa học này cung cấp nghiên cứu chuyên sâu về lập trình đồng thời, một kỹ năng thiết yếu trong môi trường máy tính hiện đại, bằng cách sử dụng ngôn ngữ Java.


Học thông qua việc thực hành các chức năng và mẫu khác nhau
Lập trình đồng thời Java

Bắt đầu bằng việc tìm hiểu mô hình bộ nhớ Java, bạn có thể có được kiến thức chuyên sâu về các tính năng đồng thời nâng cao như quản lý luồng, kỹ thuật đồng bộ hóa, chiến lược giải quyết bế tắc, luồng song song và tính năng lập trình không đồng bộ CompletableFuture.

Ngoài việc truyền đạt kiến thức lý thuyết, chúng tôi còn dạy bạn cách áp dụng lý thuyết vào việc giải quyết các vấn đề thực tế thông qua các ví dụ lập trình thực tế và một số nghiên cứu điển hình, và bạn sẽ được trải nghiệm trực tiếp các cơ chế đồng bộ hóa của Java, chẳng hạn như từ khóa volatile, khối đồng bộ, ReentrantLocks và đối tượng Condition.

Ngoài ra, bạn sẽ học cách sử dụng các tiện ích xử lý đồng thời của Java, chẳng hạn như biến Atomic, CountDownLatch, CyclicBarrier và Semaphore. Xử lý song song và các chiến lược tối ưu hóa hiệu suất cũng là những chủ đề quan trọng cần tìm hiểu.

Hơn nữa, tôi tin rằng nó sẽ đóng vai trò là nền tảng để xây dựng kiến thức cơ bản và nền tảng cho lập trình phản ứng và sẽ là nền tảng quan trọng để chuẩn bị cho Virtual Thread, mô hình luồng thế hệ tiếp theo cho Java .


Các khóa học dành cho người mới bắt đầu, trung cấp và nâng cao

Khóa học này được thiết kế dành cho người mới bắt đầu làm quen với Java đồng thời, cũng như người dùng trung cấp và nâng cao có kiến thức hoặc kinh nghiệm cơ bản nhưng muốn có thêm kiến thức chuyên sâu hơn và hiểu sâu sắc các nguyên tắc cốt lõi, cấu trúc bên trong và phương thức hoạt động của Java đồng thời và áp dụng chúng .

Nội dung học tập chính 💡

Khóa học này tập trung vào ba chủ đề chính về lập trình đồng thời: Luồng Java và đồng bộ hóa, lập trình đồng thời và lập trình không đồng bộ .

1. Hiểu về luồng Java và đồng bộ hóa

Trong Java, luồng là một tiến trình nhẹ nằm trong một tiến trình khác, đại diện cho luồng thực thi đồng thời của một chương trình. Luồng được tạo ra bằng cách mở rộng lớp Thread hoặc triển khai giao diện Runnable; điều này cho phép các nhà phát triển thực thi nhiều luồng đồng thời để cải thiện hiệu suất. Sau khi tạo một luồng, phương thức start() được gọi để khởi động luồng đó, và vòng đời của luồng được quản lý thông qua các API cơ bản như join(), sleep() và interrupt(). Việc sử dụng luồng đóng vai trò quan trọng trong việc tối ưu hóa đa nhiệm và chia sẻ tài nguyên, và đồng bộ hóa là cần thiết để đảm bảo tính nhất quán của dữ liệu và quản lý trạng thái khi nhiều luồng thực thi đồng thời.



Đồng bộ hóa là một khái niệm quan trọng trong môi trường đa luồng, đảm bảo tính toàn vẹn dữ liệu bằng cách kiểm soát truy cập đồng thời vào các tài nguyên được chia sẻ. Trong Java, từ khóa synchronized cho phép đồng bộ hóa các phương thức hoặc khối, đảm bảo chỉ một luồng có thể truy cập vào phần mã được đồng bộ hóa tại một thời điểm nhất định. Hơn nữa, giao diện Lock và các lớp triển khai của nó cho phép kiểm soát đồng bộ hóa chi tiết hơn, với ReentrantLock, triển khai tiêu biểu nhất, cung cấp chức năng khóa có thể nhập lại.

Java cung cấp nhiều công cụ đồng bộ hóa, bao gồm CountDownLatch, CyclicBarrier và Semaphore, cung cấp các cơ chế đồng bộ hóa tiên tiến cho sự hợp tác giữa các luồng. Các công cụ này đơn giản hóa các tác vụ đồng bộ hóa phức tạp, chẳng hạn như kiểm soát thứ tự thực thi luồng hoặc yêu cầu luồng chờ cho đến khi một điều kiện cụ thể được đáp ứng. Việc hiểu và sử dụng các tính năng luồng và đồng bộ hóa của Java là điều cần thiết để phát triển các ứng dụng đa luồng.


Vì vậy, trước tiên, hãy cùng xem xét khái niệm chung về luồng Java, vấn đề đồng thời và các loại và kỹ thuật đồng bộ hóa.

2. Lập trình đồng thời

Trong lập trình đồng thời, một nhóm luồng là một cách để quản lý và tái sử dụng hiệu quả nhiều luồng. Nó được triển khai thông qua khung Executor, bao gồm các giao diện như ExecutorService và ScheduledExecutorService, và sử dụng các giao diện Callable và Future để xử lý các tác vụ có giá trị trả về và nhận kết quả của chúng một cách không đồng bộ.



ExecutorService chịu trách nhiệm chạy và quản lý nhóm luồng. Nó cho phép bạn gửi tác vụ đến nhóm luồng bằng phương thức submit(), và dừng và kết thúc nhóm luồng một cách an toàn bằng phương thức shutdown() hoặc shutdownNow().

Ngoài ra, lớp Executors cung cấp các phương thức gốc để dễ dàng tạo ra nhiều loại nhóm luồng khác nhau và ThreadPoolExecutor cung cấp cơ chế thực thi cụ thể cho nhóm luồng, cho phép bạn tối ưu hóa hiệu suất và sử dụng tài nguyên khi xử lý nhiều tác vụ.

Hiểu được lập trình đồng thời liên quan đến các nhóm luồng này là điều cần thiết để phát triển các ứng dụng đa luồng dựa trên Java và rất quan trọng đối với việc quản lý tài nguyên hiệu quả và triển khai ứng dụng hiệu suất cao.



Trong phần này, bạn sẽ học cách triển khai lập trình đồng thời một cách dễ dàng và an toàn trong môi trường đa luồng.

3. Lập trình không đồng bộ

Lập trình không đồng bộ là một mô hình đồng thời thiết yếu cho các ứng dụng phức tạp, cấu trúc luồng thực thi của các tác vụ thông qua các phương pháp đồng bộ và không đồng bộ cũng như các khái niệm liên quan đến lệnh gọi chặn và không chặn.

Điều này cung cấp một phác thảo và cấu trúc giúp ngăn chặn tình trạng lãng phí tài nguyên khi công việc không hoàn thành ngay lập tức, cho phép chương trình tiếp tục thực hiện các tác vụ khác.


Trong Java, CompletableFuture cung cấp cấu trúc API cho lập trình không đồng bộ, cung cấp nhiều phương pháp khác nhau để bắt đầu, thực thi và thao tác kết quả của các hoạt động không đồng bộ, có thể được áp dụng rộng rãi, từ thao tác một kết quả duy nhất đến kết hợp nhiều hoạt động không đồng bộ.

Nó cũng cho phép lập trình bất đồng bộ mạnh mẽ và linh hoạt hơn thông qua khả năng xử lý việc chờ và hủy cùng với việc hoàn thành tác vụ, bao gồm các cơ chế xử lý ngoại lệ.

Theo cách này, lập trình không đồng bộ đóng vai trò quan trọng trong việc tăng khả năng phản hồi của hệ thống, sử dụng tài nguyên hiệu quả hơn và tối ưu hóa hiệu suất của ứng dụng.





Trong phần này, chúng ta sẽ xem xét nội dung tổng thể của lập trình bất đồng bộ bằng cách sử dụng CompletableFuture.

Cấu trúc khóa học và chương trình giảng dạy chi tiết 🏃

Phần 1. Cơ bản về hệ điều hành

  • Tìm hiểu những kiến thức cơ bản về hệ điều hành, đa nhiệm và sự khác biệt giữa tiến trình và luồng.

  • Hiểu được những nguyên tắc cơ bản của lập trình đồng thời và tìm hiểu các nguyên tắc cơ bản của lập lịch thông qua các khái niệm cốt lõi của hệ điều hành như Song song & Đồng thời, Chuyển đổi ngữ cảnh, Giới hạn CPU & Giới hạn I/O, Chế độ người dùng & Chế độ hạt nhân, v.v.

Phần 2. Cơ bản về luồng Java - Cấu trúc tạo và thực thi luồng

  • Tìm hiểu chi tiết cách tạo, chạy và kết thúc luồng trong Java.

  • Bằng cách mô phỏng vòng đời của một luồng cho mỗi trạng thái, chúng ta sẽ tìm hiểu từng bước về đặc điểm và luồng thực thi của từng trạng thái.

Phần 3. Cơ bản về luồng Java - API luồng cơ bản

  • Giải thích các khái niệm và cấu trúc chuyên sâu của API liên quan đến luồng của Java.

  • Tìm hiểu sâu về các khái niệm thiết yếu để triển khai đa luồng, chẳng hạn như chế độ ngủ, chế độ nối, chế độ ngắt và chế độ ưu tiên, cũng như cấu trúc và luồng kết nối giữa JVM và hệ điều hành thông qua thực thi phương thức gốc.

Phần 4. Cơ bản về luồng Java - Sử dụng luồng

  • Tìm hiểu cách sử dụng luồng hiệu quả trong các dự án thực tế.

  • Chúng tôi đề cập đến các chủ đề như gián đoạn và phục hồi, tìm hiểu về nhóm luồng, luồng cục bộ và xử lý ngoại lệ luồng.

Mục 5. Cơ sở đồng bộ hóa - Khái niệm đồng bộ hóa

  • Tìm hiểu các khái niệm cơ bản về đồng bộ hóa và tầm quan trọng của nó trong môi trường đa luồng.

  • Tìm hiểu sâu các khái niệm cơ bản cần thiết để hiểu các kỹ thuật đồng bộ hóa, chẳng hạn như đồng bộ hóa và mối quan hệ của nó với CPU, trình tự quan trọng và cấu hình luồng an toàn.

Mục 6. Cơ sở đồng bộ hóa - Kỹ thuật đồng bộ hóa

  • Chúng tôi sẽ trình bày sâu về các kỹ thuật đồng bộ hóa khác nhau và cách áp dụng chúng.

  • Tìm hiểu về các khái niệm về khóa, chẳng hạn như mutex, semaphore, monitor và spin lock, cũng như các chiến lược bảo vệ dữ liệu và duy trì tính nhất quán bằng cách sử dụng đồng bộ hóa.

Phần 7. Đồng bộ hóa Java

  • Tìm hiểu sâu về cơ chế đồng bộ hóa được cung cấp bởi Java.

  • Bao gồm nhiều cơ chế đồng bộ hóa khác nhau do Java cung cấp, bao gồm khái niệm đồng bộ hóa, biến điều kiện, biến động và bế tắc.

Mục 8. Khóa Java

  • Tìm hiểu về giao diện Lock của Java và các loại lớp khác nhau, đồng thời tìm hiểu cách sử dụng Lock và giải quyết các vấn đề đồng bộ hóa bằng Lock.

  • Cụ thể, chúng ta sẽ xem xét các đặc điểm, ưu và nhược điểm của khóa ghi và khóa đọc, đồng thời tìm hiểu cách sử dụng biến có điều kiện trong khóa và cách sử dụng chúng một cách chính xác thông qua các ví dụ thực tế.

Phần 9. Công cụ đồng bộ hóa Java

  • Tìm hiểu về các công cụ đồng bộ hóa khác nhau do Java cung cấp.

  • Tìm hiểu các ứng dụng thực tế bằng cách sử dụng các công cụ như Atomic Variables, Atomic * FieldUpdater, Countdown Latch và Cyclic Barrier.

. Phần 10. Khung đồng thời Java

  • Hiểu các khái niệm và tính năng của các lớp Executor, ExecutorService và Executors do Java cung cấp và tìm hiểu cách quản lý và tối ưu hóa hiệu quả các ứng dụng đa luồng bằng cách sử dụng nhóm luồng.

  • Cung cấp kiến thức thực tế về cách xử lý và quản lý kết quả của các hoạt động không đồng bộ thông qua giao diện Future.

  • Bằng cách áp dụng các khái niệm này thông qua các ví dụ và bài tập thực tế, bạn sẽ có thể giải quyết các vấn đề đồng thời phức tạp và phát triển các ứng dụng Java có hiệu suất cao, phản hồi nhanh.

Mục 11. ThreadPoolExecutor

  • Tìm hiểu chi tiết về các nguyên tắc và cách sử dụng ThreadPoolExecutor.

  • Chúng tôi sẽ trình bày cách tạo, quản lý và tối ưu hóa nhóm luồng, tìm hiểu cách quản lý tài nguyên và xử lý ngoại lệ hiệu quả bằng cách sử dụng nhóm luồng và kiểm tra kiến trúc và sơ đồ luồng tổng thể.

Phần 12: CompletableFuture

  • Chúng ta sẽ đi sâu vào CompletableFuture, tính năng lập trình không đồng bộ của Java.

  • Lớp học mạnh mẽ này, được giới thiệu trong Java 8, bắt đầu với các khái niệm cơ bản về lập trình không đồng bộ và hướng dẫn bạn cách cấu trúc và quản lý quy trình làm việc trong thế giới thực.

  • Mỗi phiên sẽ trình bày chi tiết nhiều phương pháp và trường hợp sử dụng CompletableFuture, và bạn sẽ học được các kỹ thuật thực tế để xử lý ngoại lệ, tổng hợp kết quả và chuỗi tác vụ không đồng bộ.

Đã tạo khóa học này
Giới thiệu người chia sẻ kiến thức.

Jeongsuwon (men)

  • Nhà phát triển Java hiện tại

  • Kinh nghiệm trong nhiều dự án khác nhau về SI/SM/giải pháp/di động/front & back-end

  • Đảm nhiệm vai trò Kiến trúc sư/PM/PL

  • Github

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Bất cứ ai muốn trải nghiệm thế giới lập trình đồng thời của Java

  • Bất cứ ai muốn thiết lập rõ ràng khái niệm tổng thể về chủ đề

  • Bất kỳ ai muốn phát triển ứng dụng trong môi trường đa luồng

  • Bất cứ ai muốn có ý tưởng rõ ràng về các kỹ thuật và loại đồng bộ hóa

  • Bất cứ ai muốn biết về lập trình bất đồng bộ Java

Cần biết trước khi bắt đầu?

  • java cơ bản

  • Lập trình hàm Java và cách sử dụng Lambda

Xin chào
Đây là

9,786

Học viên

321

Đánh giá

1,206

Trả lời

4.9

Xếp hạng

5

Các khóa học

다양한 프로젝트에서 웹/모바일/솔루션 제품 개발과 관련된 업무를 진행해 오고 있으며 분석/설계/개발 Role 을 맡아 오고 있습니다.

공공기간, 교육프로그램, 기업 프로젝트, 쇼핑몰 등의 웹 개발 및 솔루션 프로그램, 프레임워크, 오픈소스 연동 등의 아키텍처 설계 및 구조적 고도화 개선 등을 해 오고 있으며 개발, PL 등의 역할을 맡았습니다.

다양한 Open Source 와 여러 기술적인 경험들을 통해 웹의 전반적인 기술 흐름들을 익혔으며 개발 경험이 거듭될 수록 요구사항의 기능 구현에만 거치지 않고 좀 더 OOP 적인 구조의 소프트웨어로서 안전성과 성능을 고려한 아키텍처링과 튜닝의 기술들을 접목시켜 지속적으로 더 훌륭한 소프트웨어를 완성하기 위한 연구와 개발 실무를 책임감 있게 맡아 오고 있습니다.

 

Chương trình giảng dạy

Tất cả

103 bài giảng ∙ (44giờ 9phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

49 đánh giá

4.9

49 đánh giá

  • 한재남님의 프로필 이미지
    한재남

    Đánh giá 29

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    매우 잘 들었습니다!!!! 좋은 강의였습니다!

    • 정회운님의 프로필 이미지
      정회운

      Đánh giá 15

      Đánh giá trung bình 5.0

      5

      30% đã tham gia

      동시성, 병렬성 등 강의해주시는 내용 하나하나 다 이해가 되고 있습니다. 몰랐던 부분, 헷갈렸던 부분을 완벽하게 짚고 넘어갈 수 있었습니다. 정말 좋은 강의 해주셔서 감사합니다.

      • 열심히 공부하겠습니다!님의 프로필 이미지
        열심히 공부하겠습니다!

        Đánh giá 7

        Đánh giá trung bình 5.0

        5

        19% đã tham gia

        쓰레드에 대한 개념이 부족했다면 무조건 강추하는 강의입니다! 아직 완강하려면 멀었지만 정말 돈이 아깝지 않은 강의입니다! 이런분이 사수로 계셨다면 얼마나 좋았을까요..! 여튼 강추입니다! 다음 강의도 기대하고 있겠습니다! 시큐리티 강의도 잘봤습니다~ 나중에 DB 관련된 강의도 진행해주시면 감사하겠습니다!

        • 정수원
          Giảng viên

          네 이번에 스레드에 개념을 확실히 다지고 한단계 더 성장하는 밑거름이 되시길 바랍니다 감사합니다!!

      • 수환무님의 프로필 이미지
        수환무

        Đánh giá 16

        Đánh giá trung bình 5.0

        5

        100% đã tham gia

        스프링 시큐리티 때부터 듣고 있는데 강의 자료에 디테일이나 꼼꼼한 설명이 정수원 강사님의 강점이라고 생각합니다. !!! 이런 강의를 준비한다는 것 자체가 많음 품이 들어가는 작업인데, 매번 감사드립니다. 주니어 개발자로서 성장하는 과정에서 꼭 들어야할 강의네요 !!!

        • 정수원
          Giảng viên

          네 감사드립니다 수환무님도 계속 성장하는 개발자 되길 진심으로 응원합니다!!

      • pcdoom.co님의 프로필 이미지
        pcdoom.co

        Đánh giá 1

        Đánh giá trung bình 5.0

        5

        6% đã tham gia

        열심히공부해서 마스터하겠습니다.

        • 정수원
          Giảng viên

          네 pcdoom.co 님 저도 꼭 마스터하시길 응원하겠습니다^^ 감사합니다~

        • 향후 정수원님의 스프링 시큐리티말고 스프링 웹개발 관련 강의들을 꼭 듣고싶습니다. 진짜 모든 강의들이 다 디테일을 살려 강의하신것같아요

        • 정수원
          Giảng viên

          네 저도 개발자로서의 끊임없는 성장을 위해 계속 노력하겠습니다 감사합니다~

      2.089.422 ₫

      Khóa học khác của leaven

      Hãy khám phá các khóa học khác của giảng viên!

      Khóa học tương tự

      Khám phá các khóa học khác trong cùng lĩnh vực!