http://www.cnblogs.com/ligang305/archive/2012/07/31/2617519.html
Java任务队列在不断的学习中需要我们掌握很多相关的技术信息。
首先,下面我们就看看如何应用TaskQueue的具体问题。
Java任务队列需要我们详细的学习,
当然我们在不断的使用中还需要注意相关信息的学习。
下面我们就先来看看TaskQueue(任务队列)的具体应用。
下面我们就详细的学习下。
在同一时刻,可能有很多任务需要执行,
而程序在同一时刻只能执行一定数量的任务,
当需要执行的任务数超过了程序所能承受的任务数时怎么办呢?
这就有了先执行哪些任务,后执行哪些任务的规则。
TaskQueue类就定义了这些规则中的一种,它采用的是FIFO(先进先出,英文名是First In
First Out)的方式,也就是按照任务到达的先后顺序执行。TaskQueue类的定义。
Java任务队列代码如下:
import
java.util.Iterator;
import
java.util.LinkedList;
import
java.util.List;
public
class
TaskQueue {
private
List<Task> queue =
new
LinkedList<Task>();
// 添加一项任务
public
synchronized
void
addTask(Task task) {
if
(task !=
null
) {
queue.add(task);
}
}
// 完成任务后将它从任务队列中删除
public
synchronized
void
finishTask(Task task) {
if
(task !=
null
) {
task.setState(Task.State.FINISHED);
queue.remove(task);
}
}
// 取得一项待执行任务
public
synchronized
Task getTask() {
Iterator<Task> it = queue.iterator();
Task task;
while
(it.hasNext()) {
task = it.next();
// 寻找一个新建的任务
if
(Task.State.NEW.equals(task.getState())) {
// 把任务状态置为运行中
task.setState(Task.State.RUNNING);
return
task;
}
}
return
null
;
}
}
import
java.util.Iterator;
import
java.util.LinkedList;
import
java.util.List;
public
class
TaskQueue {
private
List<Task> queue =
new
LinkedList<Task>();
// 添加一项任务
public
synchronized
void
addTask(Task task) {
if
(task !=
null
) {
queue.add(task);
}
}
// 完成任务后将它从任务队列中删除
public
synchronized
void
finishTask(Task task) {
if
(task !=
null
) {
task.setState(Task.State.FINISHED);
queue.remove(task);
}
}
// 取得一项待执行任务
public
synchronized
Task getTask() {
Iterator<Task> it = queue.iterator();
Task task;
while
(it.hasNext()) {
task = it.next();
// 寻找一个新建的任务
if
(Task.State.NEW.equals(task.getState())) {
// 把任务状态置为运行中
task.setState(Task.State.RUNNING);
return
task;
}
}
return
null
;
}
}
|