java 任務隊列


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;  
	}  
} 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM