2011-08-02 32 views
8

Tôi đã tự hỏi liệu một người có thể định cấu hình thạch anh để thực hiện một công việc xử lý dài chỉ chạy trong một luồng tại bất kỳ thời điểm nào. Nói cách khác, nói rằng tôi có thạch anh cấu hình với một SimpleThreadPool kích thước 5. Và tôi có một công việc mà bắn mỗi 10 giây nhưng có thể mất nhiều thời gian hơn 10 giây để hoàn thành trong các tình huống nhất định. Có cách nào để cấu hình kích hoạt thạch anh/công việc/scheduler để kích hoạt này sẽ không cháy một lần nữa vì nó đã ở trong trạng thái đang chạy trong một thread khác. Khi kích hoạt lại kích hoạt, một luồng khác từ nhóm sẽ nhặt nó lên và có hai lần chạy cùng một công việc cùng một lúc. Cảm ơn vì đầu vào của bạn.Có thạch anh thực hiện công việc chỉ trong một sợi khi có nhiều chủ đề thạch anh

Làm rõ: (đối với các đề xuất về việc sử dụng dải có kích thước 1). Yêu cầu là cấu hình threadpool với 5 luồng và có bất kỳ công việc đơn lẻ nào để thực thi chỉ trong một luồng đơn tại bất kỳ thời điểm nào, nói cách khác một thể hiện của một công việc sẽ chỉ được thực hiện bởi một luồng.

+0

cách giảm kích thước hồ bơi xuống 1? – fmucar

Trả lời

20

Nếu bạn đang sử dụng thạch anh 1.x làm cho lớp Job thực hiện StatefulJob. Nếu bạn đang sử dụng Quartz 2.x thì hãy thêm chú thích @DisallowConcurrentExecution vào lớp công việc.

1

thiết

org.quartz.threadPool.threadCount=1 

Sẽ có một đơn sợi nhân viên thạch anh tại một thời điểm

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