java阻塞队列

来源:互联网 发布:sql replace 单引号 编辑:程序博客网 时间:2024/05/16 19:05

一个可以在服务器中运行的简单队列,如果项目中需要用消息队列,且对消息队列的要求不高可以用:


import java.util.concurrent.BlockingQueue;import java.util.concurrent.LinkedBlockingQueue;/** * 作为消息队列使用,目前只是在向数据库中写日志的时候使用 *  * @author cuihd *  */public class BlockingQueue extends Thread {private static BlockingQueue<String> queue = new LinkedBlockingQueue<String>();static {BlockingQueue uu = new BlockingQueue();uu.setName("donggua队列");uu.start();}/** * 把消息插入到队列 * @param message */public void produce(String message) {try {queue.offer(message);System.out.println("put 进去了第: " + "个is");} catch (Exception e) {Logger.error("插入消息队列失败",e);}}/** * 从队列中取出消息并把消息插入到数据库 */public static void consume() {while (true) {try {String message = queue.take();System.out.println(message);Thread.sleep(60000);} catch (InterruptedException e) {Logger.error(e);}}}@Overridepublic void run() {consume();}public static void main(String[] args) {BlockingQueue tt = new BlockingQueue();tt.produce("11111");try {Thread.sleep(4000);} catch (InterruptedException e) {e.printStackTrace();}tt.produce("2222");try {Thread.sleep(4000);} catch (InterruptedException e) {e.printStackTrace();}tt.produce("333");try {Thread.sleep(6000);} catch (InterruptedException e) {e.printStackTrace();}tt.produce("4444");}}


0 0
原创粉丝点击