Tìm hiểu sâu về HashMap trong Java (Phiên bản JDK 8)
HashMap là một trong những cấu trúc dữ liệu được sử dụng phổ biến nhất trong lập trình Java để quản lý các cặp khóa-giá trị. Kể từ JDK 8, cấu trúc bên trong của HashMap đã trải qua nhiều cải tiến đáng kể, bao gồm việc tích hợp cây Đỏ-Đen (Red-Black Tree) và tối ưu hóa quá trình thay đổi kích thước. Bài viết này sẽ phân tích chi tiết cách HashMa ...
Đăng vào ngày 7 tháng 8 lúc 06:14
Xây dựng hệ thống lập lịch tác vụ bằng DelayQueue trong Java
Trong quá trình phát triển ứng dụng, chúng ta thường gặp các yêu cầu về xử lý tác vụ trễ như: tự động hủy đơn hàng nếu không thanh toán sau 30 phút, gửi thông báo nhắc lịch sau một khoảng thời gian nhất định, hoặc thay đổi trạng thái sự kiện khi đến giờ bắt đầu. Đối với các ứng dụng chạy đơn lẻ (monolithic), DelayQueue là một giải pháp hiệu quả ...
Đăng vào ngày 29 tháng 7 lúc 21:18
Các chiến lược từ chối trong ThreadPoolExecutor
Khi hàng đợi tác vụ đầy và số luồng trong ThreadPoolExecutor đã đạt đến giới hạn maximumPoolSize, bất kỳ tác vụ mới nào được gửi vào sẽ bị từ chối. Cơ chế xử lý các tác vụ bị từ chối này được xác định bởi chiến lược từ chối (Rejected Execution Handler).
Trong constructor của ThreadPoolExecutor, nếu không chỉ định rõ handler, hệ thống sẽ sử dụn ...
Đăng vào ngày 26 tháng 7 lúc 21:27
Cơ Chế Khóa Trong MySQL: Khóa Bảng, Khóa Trang Và Khóa Hàng
Khóa (lock) là cơ chế kiểm soát truy cập đồng thời vào tài nguyên chung nhằm đảm bảo tính toàn vẹn và nhất quán dữ liệu khi nhiều luồng hoặc giao dịch thao tác song song. Trong MySQL, hành vi khóa phụ thuộc mạnh vào bộ lưu trữ (storage engine) được sử dụng — mỗi loại hỗ trợ một hoặc nhiều mức độ granular lock khác nhau.
Dưới đây là sự phân bố ...
Đăng vào ngày 26 tháng 7 lúc 11:35
Xây dựng ứng dụng mạng hiệu năng cao với hệ sinh thái Async trong Ruby
Async là một framework reactor hướng sự kiện (event-driven) mạnh mẽ dành cho ngôn ngữ Ruby, cung cấp nền tảng vững chắc để phát triển các ứng dụng mạng có khả năng mở rộng cao. Thay vì dựa vào mô hình đa luồng (multi-threading) truyền thống thường tốn kém tài nguyên, Async tận dụng Fiber để thực hiện đa nhiệm cộng tác, giúp xử lý hàng nghìn kết ...
Đăng vào ngày 25 tháng 7 lúc 18:07
Quản lý và Thực thi Đa luồng trong Java
1. Vòng đời và các trạng thái của luồng trong Java
Trong môi trường Java, một luồng (thread) trải qua nhiều giai đoạn khác nhau từ khi được tạo ra cho đến khi kết thúc. Hiểu rõ các trạng thái này là nền tảng để làm việc hiệu quả với đa luồng. Các trạng thái cơ bản bao gồm:
Mới (New): Luồng ở trạng thái này ngay sau khi đối tượng l ...
Đăng vào ngày 24 tháng 7 lúc 02:38
Dùng channel trong Go để tái tạo các khóa đồng bộ từ package sync
Go cung cấp hai cách tiếp cận chính để xử lý đồng thời: channel và package sync. Mỗi phương pháp phù hợp với những tình huống cụ thể; không phải lúc nào channel cũng là lựa chọn tối ưu, đôi khi dùng các nguyên hàm đồng bộ trong sync đơn giản và hiệu quả hơn. Bài viết này mô phỏng lại các cơ chế khóa đồng bộ phổ biến của package sync bằng channe ...
Đăng vào ngày 23 tháng 7 lúc 04:23
Làm chủ promise_type trong C++20: Kiểm soát đường dẫn trả về của Coroutine
Giới thiệu về Coroutine C++20 và cơ chế promise_type
C++20 đã chính thức đưa coroutine vào ngôn ngữ, cung cấp hỗ trợ cấp độ ngôn ngữ cho lập trình bất đồng bộ. Nhờ đó, lập trình viên có thể viết mã bất đồng bộ với phong cách đồng bộ quen thuộc. Cốt lõi của coroutine là promise_type, nó quyết định cách coroutine bắt đầu, tạm dừng, tiếp tục và cu ...
Đăng vào ngày 21 tháng 7 lúc 17:26
An Toàn Luồng và Cơ Chế Khóa trong Lập Trình Đa Luồng
1. Giới Thiệu về An Toàn Luồng
Khi phát triển ứng dụng đa luồng, hai khái niệm cốt lõi cần được nắm vững là "an toàn luồng" và "cơ chế khóa". Chúng ta sẽ cùng tìm hiểu sâu hơn về chúng.
1.1. Vấn đề Thực tế
Hãy xem xét một ví dụ đơn giản để minh họa một hiện tượng bất thường thường gặp trong môi trường đa luồng. Giả sử chúng ta có một biến toàn ...
Đăng vào ngày 20 tháng 7 lúc 04:25
Giải mã ReentrantLock: Cơ chế khóa đồng bộ tiên tiến trong Java
Hiểu ReentrantLock qua ví dụ xếp hàng nhà vệ sinh
Hãy tưởng tượng một hệ thống nhà vệ sinh thông minh:
Khóa synchronized: Chỉ có một bảng "Có người/Trống" (không công bằng, ai nhanh hơn sẽ vào trước).
ReentrantLock: Hệ thống phát số + xếp hàng + làn VIP (có thể công bằng hoặc ưu tiên, xem được số người đang chờ).
ReentrantLock chính ...
Đăng vào ngày 17 tháng 7 lúc 05:52