阅读背景:

java实现的任务队列

来源:互联网 

最近由于工作须要,自己完成了一个义务队列。实现了根本功效,且用法也很简略。
示例程序以下

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




你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: