Tôi đã đọc về nó khá một chút trong vài giờ qua, và tôi chỉ đơn giản là không thể nhìn thấy bất cứ lý do ( có giá trị lý do) để gọi shutdown()
về ExecutorService
, trừ khi chúng ta có một ứng dụng khổng lồ mà các cửa hàng, hàng chục và hàng chục dịch vụ thi hành di chúc khác nhau mà không được sử dụng cho một thời gian dài.
Điều duy nhất (từ những gì tôi thu thập được) việc tắt máy làm được, là làm những gì một Thread bình thường làm sau khi nó hoàn thành. Khi Thread bình thường sẽ kết thúc phương thức chạy của Runnable (hoặc Callable), nó sẽ được chuyển đến Garbage Collection để được thu thập. Với Executor Service, các chủ đề sẽ đơn giản được tạm dừng, chúng sẽ không được đánh dấu để thu gom rác. Vì vậy, việc tắt máy là cần thiết.
Ok trở lại câu hỏi của tôi. Có lý do gì để gọi tắt máy ExecutorService
rất thường xuyên, hoặc thậm chí ngay sau khi thực hiện một số tác vụ? Tôi muốn để lại trường hợp ai đó đang làm điều đó và ngay sau đó gọi đến awaitTermination()
vì điều này đã được xác thực. Một khi chúng tôi làm điều đó, chúng tôi phải tạo lại một ExecutorService
lần nữa một cái mới , để làm điều tương tự. Không phải là toàn bộ ý tưởng ExecutorService
để sử dụng lại các chủ đề? Vậy tại sao lại phá hủy ExecutorService
sớm như vậy?
Nó không phải là một cách hợp lý để chỉ cần tạo ExecutorService
(hoặc một số tùy thuộc vào số lượng bạn cần), sau đó trong quá trình ứng dụng đang chạy, chuyển cho chúng các tác vụ khi chúng xuất hiện và sau đó khi thoát ứng dụng hoặc một số giai đoạn quan trọng khác, hãy tắt các trình thực thi đó ?
Tôi muốn câu trả lời từ một số lập trình viên có kinh nghiệm, những người viết nhiều mã không đồng bộ bằng ExecutorServices.
Câu hỏi thứ hai, giao dịch nhỏ hơn một chút với nền tảng Android. NẾU một số bạn sẽ nói rằng không phải ý tưởng tốt nhất là tắt máy thực thi mọi lúc, và bạn lập trình trên android, bạn có thể cho tôi biết cách bạn xử lý những lần tắt máy đó không (cụ thể là khi nào bạn thực thi chúng) khi chúng tôi xử lý các sự kiện vòng đời ứng dụng.
Vì nhận xét CommonsWare tôi đã đưa ra bài viết trung lập. Tôi thực sự không quan tâm đến việc tranh cãi về nó đến chết và có vẻ như nó đang dẫn đến đó. Tôi chỉ muốn tìm hiểu về những gì tôi đã hỏi ở đây từ các nhà phát triển có kinh nghiệm, nếu họ sẵn sàng chia sẻ kinh nghiệm của mình. Cảm ơn.