Tôi đang thực sự tìm kiếm một cách dễ dàng hơn để tiêu diệt chuỗi không quan trọng nơi luồng đang chạy. Nhưng hầu hết các giải pháp trong internet chỉ cho tôi để sử dụng cờ boolean để kiểm soát việc thực hiện các chủ đề, nếu tôi muốn dừng thread sau đó đặt biến boolean thành false.Cách Java thread.stop() hoạt động?
Nhưng điều gì sẽ xảy ra nếu nhiệm vụ trong runnable là tác vụ tuyến tính dài, nghĩa là nhiệm vụ không lặp lại? Trong trường hợp đó, nó không phải là dễ dàng như vậy để tạo một vòng lặp 'while' để bao trùm toàn bộ khối nhiệm vụ.
Thật sự rất cám dỗ khi sử dụng Thread.stop nhưng cảnh báo "Không được chấp nhận" có vẻ khá nguy hiểm khi sử dụng. Tôi đã đọc qua bài viết này Why Are Thread.stop, Thread.suspend, Thread.resume and Runtime.runFinalizersOnExit Deprecated?
nhưng tôi không thể hiểu
Nếu bất kỳ của các đối tượng trước đây được bảo vệ bởi các màn hình đang ở một trạng thái không nhất quán, chủ đề khác bây giờ có thể xem các đối tượng trong một trạng thái không nhất quán. Các đối tượng như vậy được cho là bị hư hỏng.
"Trạng thái không nhất quán" có nghĩa là gì? Tôi đánh giá cao nếu có ai có thể giải thích về điều này.
Tôi muốn mở rộng câu hỏi của mình ở cấp độ thấp hơn, giả sử i = i + 1;
trong JVM (có thể là ngôn ngữ assembly), có thể câu lệnh Java này sẽ được chia thành một số hướng dẫn nhỏ hơn, ví dụ như move i ; add i ; get i into memory 0x0101
(Đây là Ví dụ! Tôi hoàn toàn không biết ngôn ngữ lắp ráp!)
Bây giờ, nếu chúng ta gọi thread.stop, nó sẽ dừng ở đâu? Chuỗi sẽ dừng sau câu lệnh Java đã hoàn thành hay có thể ở giữa "ngôn ngữ lắp ráp"? Nếu câu trả lời là câu trả lời thứ hai, có thể đó là lý do chúng tôi đã nói
Các đối tượng như vậy được cho là bị hỏng.
?
Ok, câu hỏi của tôi là loại bối rối, hy vọng ai đó có thể hiểu và giải thích. Cảm ơn trước.
Câu hỏi liên quan http://stackoverflow.com/questions/7291914/java-stop-safety-a-thread-not-using-while-and-boolean-flag –