Các phương pháp bạn đề cập không được chấp nhận vì một khi được sử dụng, chúng có thể mang hệ thống đến trạng thái không ổn định: nó giống như quá trình giết. Sử dụng các phương pháp này không cung cấp cho thread bất kỳ cơ hội để thoát ra một cách duyên dáng.
Kết luận là mỗi chuỗi bạn đang triển khai phải có cơ chế riêng để thoát ra duyên dáng. Thông thường bạn làm như sau. Tạo boolean
cờ exit
theo mặc định là false
. phương pháp của chủ đề run()
nên thực hiện vòng lặp như:
while (!exit) {
// do the job
}
Add phương pháp exit()
có thể biến cờ này để true
, vì vậy khi phương pháp này được gọi từ bên ngoài chủ đề của bạn sẽ rời khỏi while
vòng lặp ở phiên bản kế tiếp.Bạn nên quan tâm đến việc đóng tài nguyên vv khi thoát.
Rõ ràng bạn có thể cải thiện cơ chế bằng cách gửi bài hát
Bạn không dừng chuỗi, chỉ cần thực hiện phương thức 'chạy' kết thúc quá trình thực hiện. –
Bạn có thể giải thích về trường hợp sử dụng của bạn về lý do tại sao bạn muốn ngăn chặn một chủ đề? – Vikdor
Để hoàn thành, cách khác là chấm dứt toàn bộ quá trình - điều đó sẽ hoạt động. –