java中如何借助ArrayList实现一个先进先出队列呢?

欣喜 Java经验 发布时间:2025-01-26 14:32:36 阅读数:17166 1
下文笔者讲述借助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();
        }
     
    }
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202501/17378736528242.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者