2013-09-21 32 views
5

Daemon Threads cung cấp dịch vụ cho các chủ đề người dùng, ngoài gc Một ví dụ khác (trường hợp) có thể sử dụng một chuỗi daemon? (Bất kỳ nhiệm vụ (logic) nào có thể nằm trong phương thức run() của daemonThread trong thực tế)Daemon thread- Trường hợp sử dụng

+1

@ user976025 bài đăng của bạn phải được đánh dấu là wiki cộng đồng, vì nó dễ bị thảo luận thay vì yêu cầu câu trả lời chính xác và rõ ràng. –

Trả lời

4

Dưới đây là một danh sách ngắn khi bạn có thể muốn sử dụng một daemon thread:

  • Thu thập thống kê và thực hiện nhiệm vụ giám sát tình trạng - Gửi và nhận nhịp đập con tim mạng, cung cấp các dịch vụ cho các công cụ giám sát, và vân vân.
  • Thực hiện các tác vụ I/O không đồng bộ - Bạn có thể tạo một hàng đợi các yêu cầu I/O và thiết lập một nhóm các chủ đề daemon phục vụ các yêu cầu này một cách không đồng bộ.
  • Lắng nghe các kết nối đến - chuỗi chủ đề rất thuận tiện trong các trường hợp như thế này, vì chúng cho phép bạn lập trình vòng lặp "mãi mãi" đơn giản hơn là tạo thiết lập chú ý đến yêu cầu thoát khỏi chuỗi chính.
+0

Tôi đang suy nghĩ về đề xuất gửi thống kê người dùng (về hiệu suất của công cụ hoặc hoạt động của người dùng trên công cụ đó) như nhật thực hoặc công cụ khác, ý tôi là tạo ra các loại báo cáo trong chuỗi daemon đúng? – LeandreM

+0

@ user976095 Tuyệt đối, các loại nhiệm vụ I/O mạng này nên được thực hiện trên các chủ đề daemon. Với tôi, daemon/non-daemon "cutoff" chung đi dọc theo dòng "cho người dùng" và "cho chương trình". Gửi số liệu thống kê chắc chắn là "cho chương trình", không phải "cho người dùng". Người dùng sẽ không đánh giá cao việc chờ chuỗi thống kê của bạn kết thúc khi họ đóng chương trình, do đó, chuỗi nên chạy trong chế độ daemon. – dasblinkenlight

2

Âm thanh như một câu hỏi chuyển nhượng ha ha.

Bạn cũng có thể sử dụng chúng cho IO vì khối hoạt động IO và cách tốt nhất để thực hiện điều đó trong luồng công nhân.

Ngoài ra hoạt động mạng nếu bạn đang chờ đợi mọi thứ tải xuống, chẳng hạn như phản hồi cho yêu cầu đăng bài.

1

Chuỗi chủ đề thường được sử dụng để thực hiện các dịch vụ cho ứng dụng/applet của bạn (chẳng hạn như tải "bit fiddley"). Sự khác biệt cốt lõi giữa các luồng người dùng và các chủ đề daemon là JVM sẽ chỉ đóng một chương trình khi tất cả các luồng người dùng đã chấm dứt. Các chuỗi Daemon được JVM chấm dứt khi không còn bất kỳ luồng người dùng nào đang chạy, bao gồm cả chuỗi chủ đề thực thi chính.

Tóm lại: chủ đề daemon không ngăn chương trình thoát; chủ đề người dùng giữ cho chương trình thoát khỏi.

Các vấn đề liên quan