最近由于工作须要,自己完成了一个义务队列。实现了根本功效,且用法也很简略。
示例程序以下
package com.tone.example;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.tone.task.TaskProperty;
import com.tone.task.TaskSignature;
import com.tone.task.impl.BasicTask;
import com.tone.task.runner.TaskRunner;
/**
* 义务队列示例程序
* @author zlf
*/
public class TaskExample {
private TaskRunner taskRunner;
/**
* 做义务队列的初始化工作
*/
@Before
public void init() {
// 获得义务运行器
taskRunner = TaskRunner.getInstance();
// 将义务运行器放入线程进行调度
Thread thread = new Thread(taskRunner);
thread.start();
}
/**
* 期待义务履行完成,并做最后的退出工作
*/
@After
public void exit() throws InterruptedException {
Thread.sleep(600);
System.exit(0);
}
/**
* 最简略的义务运行示例
*/
@Test
public void example1() {
// 添加义务到义务运行器
taskRunner.addTask(new BasicTask() {
@Override
public void run() {
System.out.println("This is running in task runner thread, and thread is " + Thread.currentThread());
}
});
}
/**
* 参加优先履行次序的义务运行器
*/
@Test
public void example2() {
// 添加义务到义务运行器
taskRunner.addTask(new BasicTask(0) {
@Override
public void run() {
System.out.println("This is a normal task");
}
});
taskRunner.addTask(new BasicTask(-1) {
@Override
public void run() {
System.out.println("This is a task a bit high than normal");
}
});
}
/**
* 反复添加的义务只会运行第一个
*/
@Test
public void example3() {
// 添加义务到义务运行器
taskRunner.addTask(new BasicTask(TaskSignature.ONE) {
@Override
public void run() {
System.out.println("This is task one");
}
}, TaskProperty.NOT_REPEAT);
taskRunner.addTask(new BasicTask(TaskSignature.ONE) {
@Override
public void run() {
System.out.println("This is also task one");
}
}, TaskProperty.NOT_REPEAT);
}
/**
* 反复添加的义务只会运行最后一个
*/
@Test
public void example4() {
// 添加义务到义务运行器
taskRunner.addTask(new BasicTask(TaskSignature.ONE) {
@Override
public void run() {
System.out.println("This is task one");
}
}, TaskProperty.NOT_REPEAT_OVERRIDE);
taskRunner.addTask(new BasicTask(TaskSignature.ONE) {
@Override
public void run() {
System.out.println("This is also task one");
}
}, TaskProperty.NOT_REPEAT_OVERRIDE);
}
}
pack