java中如何借助ArrayList实现一个先进先出队列呢?
下文笔者讲述借助Arraylist实现队列效果的简介及分享,如下所示
例:ArrayList实现队列效果
例:ArrayList实现队列效果
import java.util.ArrayList; import java.util.Date; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import com.java265.eri.compu.entity.Log; import com.java265.eri.compu.service.NodeService; /** * 日志处理类 */ public class LogProcessor extends Thread { private Logger logger = LoggerFactory.getLogger(LogProcessor.class); private String nodeAddr; private List<Log> queue; @Autowired private NodeService nodeService; public void init(String nodeAddr) { this.nodeAddr = nodeAddr; this.queue = new ArrayList<Log>(); this.start(); } public void write(String content, String type, int executeId, String scriptName, int detailId) { synchronized (queue) { Log log = new Log(); log.setNodeAddr(nodeAddr); log.setType(type); log.setContent(content); log.setExecuteId(executeId); log.setDetailId(detailId); log.setScriptName(scriptName); log.setCreateTime(new Date()); queue.add(log); queue.notify(); } } @Override public void run() { logger.info("LogProcessor is starting..."); Log log = null; while (!interrupted()) { try { synchronized (queue) { while (queue.isEmpty()) { queue.wait(); } log = queue.remove(0); } } catch (InterruptedException ie) { logger.info("LogProcessor interrupted!"); break; } if (log != null) { try { nodeService.saveLog(log); } catch (Exception e) { logger.error("LogProcessor error! {}", e); } } } } public void close() { this.interrupt(); this.queue.clear(); } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。