java队列使用
Java知识总结----队列的使用
操作方法
(01)首先我们要知道使用队列的目的是什么?一般情况下,如果是一些及时消息的处理,并且处理时间很短的情况下是不需要使用队列的,直接阻塞式的方法调用就可以了。但是,如果在消息处理的时候特别费时间,这个时候如果有新的消息来了,就只能处于阻塞状态,造成用户等待。这个时候在项目中引入队列是十分有必要的。当我们接受到消息后,先把消息放到队列中,然后再用新的线程进行处理,这个时候就不会有消息的阻塞了。下面就跟大家介绍两种队列的使用,一种是基于内存的,一种是基于数据库的。
(02)首先,我们来看看基于内存的队列。在Java的并发包中已经提供了BlockingQueue的实现,比较常用的有ArrayBlockingQueue和LinkedBlockingQueue,前者是以数组的形式存储,后者是以Node节点的链表形式存储。至于数组和链表的区别这里就不多说了。
(03)BlockingQueue 队列常用的操作方法:1.往队列中添加元素: add(), put(), offer()2.从队列中取出或者删除元素: remove() element() peek() pool() take()
(04)每个方法的说明如下:offer()方法往队列添加元素如果队列已满直接返回false,队列未满则直接插入并返回true;add()方法是对offer()方法的简单封装.如果队列已满,抛出异常new IllegalStateException("Queue full");put()方法往队列里插入元素,如果队列已经满,则会一直等待直到队列为空插入新元素,或者线程被中断抛出异常ve()方法直接删除队头的元素:peek()方法直接取出队头的元素,并不删除ent()方法对peek方法进行简单封装,如果队头元素存在则取出并不删除,如果不存在抛出异常NoSuchElementException()pool()方法取出并删除队头的元素,当队列为空,返回null;take()方法取出并删除队头的元素,当队列为空,则会一直等待直到队列有新元素可以取出,或者线程被中断抛出异常offer()方法一般跟pool()方法相对应, put()方法一般跟take()方法相对应.日常开发过程中offer()与pool()方法用的相对比较频繁.
(05)下面用一个例子来看看是怎么使用的。
(06)以上呢,就是基于内存的队列的介绍,基于内存的队列,队列的大小依赖于JVM内存的大小,一般如果是内存占用不大且处理相对较为及时的都可以采用此种方法。如果你在队列处理的时候需要有失败重试机制,那么用此种队列就不是特别合适了。下面就说说基于数据库的队列。基于数据库的队列,很好理解,就是接收到消息之后,把消息存入数据库中,设置消费时间、重试次数等,再用新的线程从数据库中读取信息,进行处理。首先来看看数据库的设计。
(07)代码示例如下:
(08)获取到消息之后,还需要再判断消息是否合法,如是否达到最大消费次数,消息是否已被成功消费,等,判断代码如下:
(09)消息处理完毕之后,根据消费结果修改数据库中的状态。
(10)下次消费时间的计算如下:根据消费次数计算,每次消费存在递增的时间间隔。
(11)除此之外,对于消费完成,等待删除的消息,可以将消息直接删除或者是进行备份。最好不要在该表中保留太多需要删除的消息,以免影响数据库的查询效率。我们在处理消息的时候,首先对消息进行了锁定,设置了locker,如果系统出现异常的时候,也会产生消息一直处于被锁定的状态,此时可能还需要定期去修复被锁定的消息。
(12)以上就是对两种队列的简单说明。在使用基于数据库的队列的时候,其中还使用到了事件处理机制,这部分的内容,就下次的时候再去介绍。
-
怎样解决网页打不开问题?
电脑正常使用情况下,有的网站忽然就打不开了,IE假吊死(其他网站浏览正常),可能还会自动关闭所有IE任务。步骤/方法(01)运行杀毒软件,检查任务管理器内存占用和程序运行情况,排除病毒因素。(02)IE工具栏里打开Internet选项,鼠标点击“删除文件”将Internet临时文件删除。(03)...
-
AC88U 设定无线网路 华硕路由器
AC88U设定无线网路现在家中的电子设备很多,路由器的无线功能就变得很重要操作方法(01)登陆路由器的管理页面(02)AC88U带有2个频段的wifi一个是2.4G(03)另一个频段是5G5G拥有更高的带宽和速率(04)请到[无线网路]>>[一般设定],然后选择您想使用的 [授权方式]一般状况下,...
-
word中替换功能的六个实用技巧
在这个讲效率的年代,word的使用也需要效率,那么,我们怎么才能使word的使用也有效率呢,这就需要我们在平时多积累一些实用小技巧,但如何能够更加了解word各个功能的使用技巧呢?那下面我们就以Word中替换功能为例,详细讲解它的6个技巧。操作方法(01)第一、去除word里括号...
-
快递单号自动识别接口调试平台
之前分享过了快递鸟的订阅接口、电子面单接口的调试平台的操作方式,现在来说一下快递单号自动识别接口的调试。快递单号自动识别接口就是说不输入快递公司编码参数,也能够查询到快递的物流轨迹。这个接口和查询接口一起使用的。操作方法(01)登录调试平台,用自己的账...