2012-08-24 56 views
6

Trong ứng dụng của chúng tôi khi người dùng nhấp vào liên kết lệnh, cửa sổ bật lên được tạo. Nhấp chuột này sẽ chuyển một id để xử lý.Làm thế nào để chấm dứt một sợi trong một phạm vi xem phạm vi đậu?

Bean được quản lý của tôi là chế độ xem và tôi đang tạo một chuỗi để thực hiện một số tác vụ.

Trong trường hợp người dùng nhấp vào liên kết, cửa sổ bật lên được tạo và chuỗi đã bắt đầu thực hiện công việc, giả sử người dùng đóng cửa sổ bật lên và cố gắng nhấp vào liên kết cung cấp id khác lần này. Vấn đề của tôi là các chủ đề trước đó đã được bắt đầu không bị phá hủy. Tôi vẫn có thể nhận được các chi tiết id mới nhất làm phản hồi nhưng chuỗi trước vẫn thực hiện công việc.

Tôi muốn biết nếu có cách nào để chấm dứt chuỗi phiên bản trước đó trên một yêu cầu mới. Tôi biết tôi có thể đạt được điều này bằng cách sử dụng sessioncoped nhưng quảng cáo đang được mở trong cùng một phiên.

+0

bất kỳ một kẻ nào ??? – PermGenError

Trả lời

1

chỉ như một giải pháp nhanh chóng nhất có thể cho trường hợp sử dụng của bạn:

  • Tôi muốn sử dụng threadpool hơn là tạo chủ đề mới theo yêu cầu (như sợi tổng hợp ý tưởng là hiệu quả hơn + được cung cấp trong API chuẩn)
  • sau đó bạn có thể dễ dàng ngăn chặn bất kỳ thread chạy trong hồ bơi, giải pháp tôi đã tìm thấy trên: http://www.coderanch.com/t/234197/threads/java/stopping-runnable-ThreadPoolExecutor => câu hỏi chứa mẫu để thực hiện threadpool và câu trả lời 1.st mang đến cho bạn giải pháp

gọi:

boolean cancel(boolean mayInterruptIfRunning) 

Trong trường hợp của bạn gọi nên sử dụng:

mayInterruptIfRunning=true 

Các chỉ quesion trái là: ở đâu để giữ tài liệu tham khảo trong tương lai? :)
Chúng tôi có thể thảo luận rằng nếu bạn muốn cũng :)

+0

b .. cảm ơn rất nhiều vì phản hồi của bạn. Tôi rất trân trọng điều này. tôi nghĩ rằng nó đã làm các trick. tôi đã sử dụng biến boolean tĩnh. vào lần đầu tiên thread pool chạy i đặt nó thành true, do đó, trên yêu cầu thứ hai tôi hủy bỏ threadpool hiện tại và tạo một thể hiện mới. i dunno nếu đây là cách làm tiêu chuẩn. tôi đã chỉnh sửa mã trong câu hỏi. bạn nói gì – PermGenError

+1

bạn sẽ gặp rắc rối, vì điều này sẽ làm việc cho một khách hàng duy nhất (khi bạn sử dụng trường tĩnh - ifinterrupt). Trong trường hợp bạn có 2 khách hàng có thể chấm dứt một sợi khác. Tôi đoán đó không phải là hành vi mong muốn :) Thay vào đó bạn cần phải cung cấp bản đồ: đến tương lai –

+0

oh vâng, tôi hoàn toàn quên rằng ... chỉ để làm rõ, sẽ giữ tương lai trong phiên làm việc? .. – PermGenError

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