Tôi đang phát triển một ứng dụng đa luồng để tạo các kết nối tới các máy chủ bên ngoài - mỗi trên các luồng riêng biệt - và sẽ bị chặn cho đến khi có đầu vào. Mỗi lớp mở rộng lớp Thread. Để giải thích, hãy gọi những "chuỗi kết nối" này.Java: Làm thế nào để bắt InterruptedException trên một sợi, khi bị gián đoạn bởi một luồng khác?
Tất cả các chuỗi kết nối này được lưu trữ trong một băm đồng thời.
Sau đó, tôi cho phép gọi phương thức dịch vụ web RESTful để hủy bất kỳ chủ đề nào. (Tôi đang sử dụng Grizzly/Jersey, vì vậy mỗi cuộc gọi là một chủ đề riêng của mình.)
Tôi truy xuất chuỗi kết nối cụ thể (từ hashmap) và gọi phương thức ngắt() trên đó.
Vì vậy, đây là câu hỏi, trong chuỗi kết nối, làm thế nào để tôi nắm bắt được InterruptedException? (Tôi muốn làm điều gì đó khi chuỗi kết nối bị dừng bởi một lệnh RESTful bên ngoài.)
Vâng, AFAIK, khi một chuỗi ném InterruptedEx. nó sẽ lan truyền đến chủ đề đã bắt đầu chuỗi ném ngoại lệ. Đó là tại thread cha mà bạn có thể bắt IE. –
Tôi vừa làm một thử nghiệm để bao quanh mã bắt đầu chuỗi kết nối và trình biên dịch cảnh báo rằng InterruptedException không bị ném. – ikevin8me
Hơn nữa, chuỗi chủ đề bắt đầu các chuỗi kết nối đó không đi vào trạng thái chờ hoặc trạng thái ngủ, vì vậy nó có nghĩa là (hoặc ít nhất là tôi nghĩ) nó ngừng tồn tại sau khi nó đã bắt đầu tất cả các chuỗi con đó. – ikevin8me