2011-01-29 32 views
6

Tôi muốn hỏi một câu hỏi cơ bản trước khi tôi tiếp tục câu hỏi chính của mình.Tôi có thể sinh ra một sợi chỉ từ một servlet không?

Cho phép nói rằng tôi đang chạy một chương trình Java đơn giản, sẽ sinh ra một chuỗi trong hàm chính. Chuỗi có tiếp tục chạy khi chức năng chính hoàn thành không? Có khái niệm về mối quan hệ cha/con giữa các luồng không.

Tôi có một servlet mất nhiều thời gian để xử lý yêu cầu (5 phút). Tôi có thể sinh ra một sợi nền từ servlet chính để xử lý công việc này không. Trả lại sớm hơn. Chủ đề nền có tiếp tục chạy ngay cả khi servlet chính đã xử lý xong không?

Trả lời

2
  • Có điều như chủ đề phụ huynh và trẻ em, nhưng bạn không có nhiều quyền kiểm soát trên đó . Ví dụ: có InheritableThreadLocal, nơi bạn có thể lưu các biến cho phân cấp chuỗi.

  • bạn có thể sinh ra một chuỗi mới từ một servlet. Ưu tiên khung công tác thực thi Java 5

  • nếu sử dụng servlet 3.0, hãy xem khả năng asynchronous processing của nó.

4

Khi bạn muốn ứng dụng của bạn để thoát khỏi mặc dù bạn vẫn có đề chạy, bạn để đánh dấu chủ đề của bạn như một daemon thread:

 
Thread t = new Thread(myRunnable); 
t.setDaemon(true), 
t.start(); 

Điều này đặc biệt quan trọng khi bạn làm điều đó trong một ứng dụng máy chủ, nếu không máy chủ không thể tắt!

Nếu bạn làm điều đó nhiều lần, bạn có thể muốn xem xét một ThreadPool để làm điều này hiệu quả hơn

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