Tôi có một vấn đề mà tôi không thực sự nghĩ rằng có một giải pháp nhưng tôi sẽ cố gắng ở đây anyway. Ứng dụng của tôi sử dụng một pool thread và một số luồng trong pool này có một biến cục bộ thread có thể kế thừa. Tôi đã mở rộng lớp ThreadPoolExecutor về cơ bản rõ ràng ra biến địa phương thread (trong phương thức gọi lại afterExecute) khi một luồng được thực hiện xong.InheritableThreadLocal và thread pools
Tôi hiểu rằng khi bạn có biến InheritableThreadLocal, phương thức childValue() được gọi khi thread được khởi tạo để lấy giá trị của biến ThreadLocal từ chuỗi gốc. Tuy nhiên, trong trường hợp của tôi, lần sau thread được sử dụng (sau khi được sử dụng một lần), giá trị của biến InheritableThreadLocal là null (vì nó đã bị xóa trước đó trong afterExecute). Có cách nào để truy cập biến chủ đề của thread thread trong beforeExecute để tôi về cơ bản có thể mô phỏng phương thức childValue trong InheritableThreadLocal có tại thời điểm tạo luồng không.
Tại sao các bạn thanh toán bù trừ giá trị địa phương chủ đề thread con nếu bạn cần nó sau này? Có phải các giá trị cần thiết trong lần chạy tiếp theo từ một chuỗi gốc khác hoặc có thay đổi trong chuỗi gốc do chuỗi con đầu tiên được tạo không? –
@Bert - đó là lý do chính xác. Về cơ bản tôi đang lưu trữ một id yêu cầu trong biến địa phương thread mà thay đổi trên nhiều sử dụng của các chủ đề con. – neesh