Theo tôi Cron4J có một số điểm mạnh:
- Thư viện nhẹ, nhỏ gọn, và miễn phí.
- Lập trình rất dễ vì bạn chỉ cần nhớ vài phương thức.
- Chạy trên mọi phiên bản Java.
- Cú pháp cấu hình lập lịch đơn giản nhưng rất linh hoạt
1. Lập trình với thư viện Cron4J
Việc lập trình sử dụng Cron4J rất đơn giản theo 04 bước như sau:+ B1: Tạo một đối tượng là thể hiện lớp Scheduler (it.sauronsoftware.cron4j.Scheduler)
+ B2: Lập lịch để thực hiện tác vụ của bạn tại thời điểm bạn muốn. Lịch được lập bằng một xâu theo định dạng SchedulingPattern (it.sauronsoftware.cron4j.SchedulingPattern). Còn để thực hiện tác vụ bạn có thế sử dụng đối tượng Runnable (java.lang.Runnable) hoặc Task (it.sauronsoftware.cron4j.Task).
+ B3: Khởi chạy đối tượng Scheduler
+ B4: Dừng chạy đối tượng Scheduler nếu bạn không muốn làm gì thêm.
Dưới dây là đoạn mã ví dụ, xâu "* * * * *" xác định tác vụ được thực hiện hàng phút:
import it.sauronsoftware.cron4j.Scheduler; public class Quickstart { public static void main(String[] args) { // Tạo một đối tượng Scheduler Scheduler s = new Scheduler(); // Lập lịch và xác định tác vụ cần thực hiện s.schedule("* * * * *", new Runnable() { public void run() { System.out.println("Another minute ticked away..."); } }); // Khởi chạy đối tượng s.start(); // Chờ 10 phút try { Thread.sleep(1000L * 60L * 10L); } catch (InterruptedException e) { ; } // Dừng tác vụ s.stop(); } }Ví dụ trên chạy trong 10 phút. Mỗi phút sẽ in ra màn hình câu thông báo "Another minute ticked away...".
2. Cấu hình đặt lịch (Scheduling pattern)
Cron4J sử dụng Scheduling Pattern để cấu hình đặt lịch thực hiện, cấu hình tương tự như crontab trên UNIX. Đơn vị thời gian nhỏ nhất cho phép là phút.Xâu cấu hình này được chia thành 05 phần như sau:
Mỗi phần này theo chuẩn sau:
Bạn có thể kết hợp lại để tạo được xâu pattern mà bạn muốn. Dưới đây là một số ví dụ:
Mẫu này xác định tác vụ sẽ được chạy vào phút thứ 5 hàng giờ. Ví dụ: 00:05, 01:05, 02:05...
Mẫu này xác định mỗi phút tác vụ sẽ được thực hiện 1 lần.
Mẫu này xác định tác vụ sẽ được thực hiện từng phút trong khoảng thời gian 12h của ngày thứ 2.
Mẫu này xác đinh tác vụ sẽ được thực hiện từng phút trong khoảng 12h thứ 2 ngày 16. Nếu vào ngày 16 mà không phải là thứ 2 thì tác vụ cũng sẽ không được thực hiện.
Tác vụ này sẽ được thực hiện vào lúc 11:59AM vào các ngày Thứ Hai, Thứ Ba, Thứ tư, Thứ 5 và Thứ 6.
Mẫu này tương đương với mẫu 59 11 * * 1,2,3,4,5 ở trên.
Mẫu này xác định cứ 5 phút tác vụ sẽ được thực hiện một lần. Ví dụ: 0:00, 0:05, 0:10; 0:15,...
Mẫu này xác định tác vụ sẽ được thực hiện 5 phút 1 lần trong khoảng thời gian từ phút thứ 3 đến phút thứ 18. Ví dụ: 0:03, 0:08, 0:13, 0:18, 1:03, 1:08,...
Mẫu này xác định tác vụ được thự hiện 15 phút 1 lần trong khoảng thời gian từ 9h đến 17h. Ví dụ: 9:00, 9:15, 9:30, 9:45,..., 17:45.
Mẫu này xác định tác vụ được thực hiện từng phút vào lúc 12h trong các ngày mùng 10, 12, 14, 16 của tháng.
Mẫu này xác định tác vụ sẽ được thực hiện từng phút vào lúc 12h trong các ngày từ mùng 1 đến 15, ngày 17 và từ ngày 20 đến ngày 25.
Mẫu này xác định tác vụ được thực hiện hàng ngày vào lúc 05:00, 10:08 và 17:22.
Tài liệu tham khảo:
- http://www.sauronsoftware.it/projects/cron4j/manual.php
No comments:
Post a Comment