submit() nuốt gọn ngoại lệ — và newFixedThreadPool xếp 99.998 tác vụ mà không từ chối cái nào
Vì sao hai kiểu pool phổ biến nhất đều là bom hẹn giờ, bốn chính sách khi hàng đợi đầy, và bảng đo kích thước pool cho tải tốn CPU so với tải chờ I/O.
Vì sao hai kiểu pool phổ biến nhất đều là bom hẹn giờ, bốn chính sách khi hàng đợi đầy, và bảng đo kích thước pool cho tải tốn CPU so với tải chờ I/O.
Viết tay sản xuất – tiêu thụ bằng wait/notify để thấy hai lỗi kinh điển hỏng ra sao, rồi viết lại bằng BlockingQueue trong sáu dòng.
Dựng deadlock có chủ đích, đọc kết quả jstack thật, sửa bằng thứ tự khoá nhất quán, và ba biến thể deadlock mà jstack không phát hiện được.
tryLock thoát khỏi deadlock mà synchronized chịu chết, cái giá thật của khoá công bằng, và bảng đo cho biết khi nào tách đọc–ghi mới đáng.
So sánh-và-đổi hoạt động ra sao, đo số lần phải thử lại theo mức tranh chấp, bài toán ABA cùng cách chữa, và vì sao LongAdder giữ nguyên tốc độ ở 32 luồng.
Hiện tượng không thấy thay đổi tái hiện được 2/2 lần, sắp xếp lại lệnh quan sát được 10 lần trên 2 triệu, và vì sao volatile không cứu được i++.