首页 > 代码库 > 队列BlockingQueue的简单例子

队列BlockingQueue的简单例子

队列,当进行多线程编程的时候,很多时候可能会用到,队列是先进先出的,我们可以将要执行的任务放置在队列内缓存起来,当线程池中线程可以使用的时候,我们就从队列中获取一个任务执行。。

当前是一个队列的简单例子。

 

package com.chen.queue;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

public class QueueTest
{

    /** 测试队列、先进先出
     * @author : EX-CHENWEIXIAN001 陈惟鲜
     * @create_date :2014-6-6 下午03:33:39
     * @param args
     */
    public static void main(String[] args)
    {
        try
        {
            // 常用创建队列方式
            BlockingQueue<Map> blockingQueue = new LinkedBlockingQueue<Map>();
            Random random = new Random();// 随机函数
            for (int i = 0; i < 5; i++)
            {
                Map tempMap = new HashMap();
                tempMap.put("key" + i, random.nextInt(100)); // 创建队列map
                blockingQueue.add(tempMap);// 给队列添加信息
            }
//             队列大小
            int blockingQueueSize = blockingQueue.size();
            System.out.println("=========================");
            System.out.println(blockingQueueSize); 
            System.out.println(blockingQueue); // 队列内容
            System.out.println("=========================");
            for (int i = 0; i < blockingQueueSize; i++)
            {
                System.out.println(i+"===++++++++++===");
                Map tempMap = blockingQueue.take();// 取出队列值,取一次,就从队列中移除
                System.out.println(tempMap); // 打印内容
                // 打印队列是否还有东西
                System.out.println(blockingQueue);
            }
            System.out.println("=========game over================");
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }

}