--- tags: Multi-threading in Java --- # 000: Multi-threading từ hardware tới software với Java Chúng ta đã nghe nhiều về concurrent programming, parallel programming hay đơn giản và gần gũi nhất là multi-thread programming. Nó có gì hay ho kì ảo mà được bàn luận nhiều đến vậy? Chủ đề này không mới, với 0.7s, Google trả về khoảng 700 triệu kết quả. Tuy nhiên phần nhiều các bài viết tiếng Việt khá khô khan hoặc dịch chưa chuẩn. Các kết quả tiếng Anh thì... dài, mất công translate, thôi quay lại tiếng Việt vậy. Nói vậy thôi, mình cũng chỉ là thành phần đi tìm tòi và tổng hợp lại dưới một góc nhìn khác, có thể dễ hiểu và hấp dẫn hơn. Mọi người tự kiểm chứng nhé. Series bao gồm các chủ đề: - [001: Parallel computing hardware P1](https://hackmd.io/@datbv/rk-LaT7tO) - [002: Parallel computing hardware P2](https://hackmd.io/@datbv/BJea6TXt_) - [003: Thread và Process](https://hackmd.io/@datbv/HkGrCTXYu) - [004: Concurrent và Parallel](https://hackmd.io/@datbv/Hy-ORpmtd) - [005: OS đối xử với thread thế nào?](https://hackmd.io/@datbv/rk3pA6XK_) - [006: Vòng đời của thread diễn ra thế nào trong Java?](https://hackmd.io/@datbv/HJHfk0mKO) - [007: Data race và Mutual exclusion](https://hackmd.io/@datbv/BkAtJAmKd) - [008: Lock và lock-free trong Java, từ lý thuyết đến thực tiễn](https://hackmd.io/@datbv/Hy1DeA7Y_) - [009: Deadlock, Livelock, Abandoned lock và Starvation](https://hackmd.io/@datbv/Byiv7sVtd) - [010: Nhầm tưởng về **Data race** và **Race condition**?](https://hackmd.io/@datbv/rJIBvGIYu) - [011: Cách giải quyết Race condition](https://hackmd.io/@datbv/HJoXknIKd) - [012: Sự thật về **Hyper-threading**](https://hackmd.io/@datbv/BJkuU3PY_) - [013: Lập trình **multi-thread** có thật sự nhanh hơn **single-thead**?](https://hackmd.io/@datbv/ryy0wMLK_) - [014: Đánh giá performance khi lập trình **multi-thread** P1](https://hackmd.io/@datbv/SkUm58LKd) - [015: Đánh giá performance khi lập trình **multi-thread** P2](https://hackmd.io/@datbv/rJ9wPiuKu) - [016: Cách thiết kế chương trình **parallel execution** P1](https://hackmd.io/@datbv/ryCP9ULFd) - [017: Cách thiết kế chương trình **parallel execution** P2](https://hackmd.io/@datbv/HyA0-1KFd) - [018: **Cooperative** và **Preemptive** trong **Multi-tasking**](https://hackmd.io/@datbv/HkztPR2qd) - [019: Thread modeling và Lightweight thread](https://hackmd.io/@datbv/rksMsLLYu) Subcribe để nhận thông báo khi có bài viết mới nhé! ### Reference - https://en.wikipedia.org/wiki/Amdahl%27s_law - https://en.wikipedia.org/wiki/Flynn's_taxonomy - https://en.wikipedia.org/wiki/Parallel_computing - https://www.backblaze.com/blog/whats-the-diff-programs-processes-and-threads/ - https://www.geeksforgeeks.org/hardware-architecture-parallel-computing/ - https://www.geeksforgeeks.org/difference-between-concurrency-and-parallelism/ - https://www.modernescpp.com/index.php/race-condition-versus-data-race - https://www.intel.com/content/www/us/en/gaming/resources/hyper-threading.html - https://www.hp.com/us-en/shop/tech-takes/what-is-hyperthreading - https://www.rapitasystems.com/blog/what-are-co-operative-and-pre-emptive-scheduling-algorithms © [Dat Bui](https://www.linkedin.com/in/datbv/)