`
jasonw68
  • 浏览: 148879 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java 任务队列

    博客分类:
  • J2SE
阅读更多
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;  
	}  
} 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics