Tôi muốn một đối tượng sẽ sinh ra một chuỗi daemon sẽ tiếp tục chạy trong suốt vòng đời của quá trình. Giả sử, chỉ vì lợi ích của cuộc tranh luận, đó là một luồng trong một hệ thống nhúng và nó chờ để nhận và xử lý các lệnh trên một số cổng chẩn đoán. Nhưng, nó có thể là bất cứ điều gì thực sự. Ý tưởng chính là nó đang xem thứ gì đó trong một khoảng thời gian dài; Nó không thực hiện một chuỗi các nhiệm vụ .
Trí tuệ Java thông thường nói, Không bao giờ khởi tạo Thread
, Sử dụng ExecutorService
thay thế. (Ví dụ, xem câu trả lời này ) Nhưng lợi ích là gì? Sử dụng một sợi hồ bơi như một phương tiện để tạo ra một đơn sợi dài chạy dường như vô nghĩa. Làm thế nào tốt hơn nếu tôi viết nó?
class Foobar {
public Foobar() {
this.threadFactory = Executors.defaultThreadFactory();
...
}
public Foobar(ThreadFactory threadFactory) {
this.threadFactory = threadFactory;
...
}
public void start() {
fooThread = threadFactory.newThread(new Runnable() { ... });
fooThread.setDaemon(true);
fooThread.start();
}
...
}
Lưu ý: câu hỏi này có vẻ giống với tôi, nhưng câu trả lời chỉ nói cách sử dụng nhóm luồng chứ không phải tại sao .