TaskQueue

2020-01-17  本文已影响0人  zw3e

FIFO(先进先出,英文名是First InFirst Out)的方式,也就是按照任务到达的先后顺序执行。TaskQueue类的定义。

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; 

        } 

    }

上一篇下一篇

猜你喜欢

热点阅读