Java任務隊列的定義與代碼的詳細介紹
Java任務隊列需要我們詳細的學習,當然我們在不斷的使用中還需要注意相關信息的學習。下面我們就先來看看TaskQueue(任務隊列)的具體應用。下面我們就詳細的學習下。
在同一時刻,可能有很多任務需要執(zhí)行,而程序在同一時刻只能執(zhí)行一定數(shù)量的任務,當需要執(zhí)行的任務數(shù)超過了程序所能承受的任務數(shù)時怎么辦呢?這就有了先執(zhí)行哪些任務,后執(zhí)行哪些任務的規(guī)則。
TaskQueue類就定義了這些規(guī)則中的一種,它采用的是FIFO(先進先出,英文名是First In First Out)的方式,也就是按照任務到達的先后順序執(zhí)行。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);
- }
- }
- // 取得一項待執(zhí)行任務
- public synchronized Task getTask() {
- Iterator<Task> it = queue.iterator();
- Task task;
- while (it.hasNext()) {
- task = it.next();
- // 尋找一個新建的任務
- if (Task.State.NEW.equals(task.getState())) {
- // 把任務狀態(tài)置為運行中
- 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);
- }
- }
- // 取得一項待執(zhí)行任務
- public synchronized Task getTask() {
- Iterator<Task> it = queue.iterator();
- Task task;
- while (it.hasNext()) {
- task = it.next();
- // 尋找一個新建的任務
- if (Task.State.NEW.equals(task.getState())) {
- // 把任務狀態(tài)置為運行中
- task.setState(Task.State.RUNNING);
- return task;
- }
- }
- return null;
- }
- }
以上就是對Java任務隊列的詳細介紹。
【編輯推薦】