package com.jackson.task.queue; import com.jackson.db.service.IDaoService; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.util.ArrayList; import java.util.ListIterator; /** * Created by Jackson on 2017/2/9. * 用来装QueueTaskCollection的容器 * 线程不安全的 */ public class QueueTaskCollections implements IDaoService<RequestQueueTask> { private static Logger logger = LogManager.getLogger(QueueTaskCollections.class.getName()); public static QueueTaskCollections newInstance() { return new QueueTaskCollections(); } private QueueTaskCollections() { list = new ArrayList<>(); } @Override public RequestQueueTask take() { RequestQueueTask task = null; ListIterator<QueueTaskCollection> iterator = list.listIterator(); while (iterator.hasNext()) { QueueTaskCollection collection = iterator.next(); if (collection.getState() == QueueTaskCollection.CollectionState.CAN_TAKE) { task = collection.getTask(); break; } if (collection.getState() == QueueTaskCollection.CollectionState.COMPLETE) { iterator.remove(); continue; } if (collection.getState() == QueueTaskCollection.CollectionState.CANT_TAKE) { continue; } } return task; } private ArrayList<QueueTaskCollection> list; public void add(QueueTaskCollection collection) { list.add(collection); } }