BlockingQueue

简介:
package com.ixhong.base.thread;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

public class ArrayBlockingQueueTest {

    public static void main(String[] args) {
        final BlockingQueue<String> queue = new ArrayBlockingQueue<String>(1);
        // final CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<String>();
for (int i = 0; i < 4; i++) {
            new Thread(new Runnable() {
                @Override
public void run() {
                    while (true) {
                        try {
                            //String log = list.remove(0);
String log = queue.take();
                            parseLog(log);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }

            }).start();
        }

        System.out.println("begin:" + (System.currentTimeMillis() / 1000));
        /*
         * 模拟处理16行日志,下面的代码产生了16个日志对象,当前代码需要运行16秒才能打印完这些日志。
         * 修改程序代码,开四个线程让这16个对象在4秒钟打完。
         */
for (int i = 0; i < 16; i++) { // 这行代码不能改动
final String log = "" + (i + 1);// 这行代码不能改动
{
                //list.add(log);
try {
                    queue.put(log);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                // ArrayBlockingQueueTest.parseLog(log);
}
        }
    }

    // parseLog方法内部的代码不能改动
public static void parseLog(String log) {
        System.out.println(log + ":" + (System.currentTimeMillis() / 1000));

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

}
目录
相关文章
|
6月前
|
存储 安全 Java
ArrayBlockingQueue 和 LinkedBlockingQueue 有什么区别?
ArrayBlockingQueue 和 LinkedBlockingQueue 有什么区别?
|
8月前
|
存储 缓存 安全
BlockingQueue阻塞队列原理以及实现
BlockingQueue阻塞队列原理以及实现
76 0
|
9月前
|
存储 缓存 安全
JUC之阻塞队列解读(BlockingQueue)
JUC之阻塞队列解读(BlockingQueue)
|
10月前
阻塞队列BlockingQueue
阻塞队列BlockingQueue
31 0
阻塞队列BlockingQueue
|
缓存 安全 Java
JUC系列学习(四):线程池阻塞队列BlockingQueue及其相关实现ArrayBlockingQueue、LinkedBlockingQueue
线程池阻塞队列BlockingQueue及其相关实现ArrayBlockingQueue、LinkedBlockingQueue
|
存储 Java 索引
BlockingQueue
网上看了好多文章将线程池的但是似乎都没的多少人会详细讲解里面的任务队列,所以只有自己动手学习其中的任务队列 BlockingQueue
3045 0
BlockingQueue
|
算法
BlockingQueue二
接着上篇BlockingQueue没讲完的 LinkedTransferQueue LinkedTransferQueue是一个由链表结构组成的无界阻塞队列,相对于其它阻塞队列,LinkedBlockingQueue可以算是LinkedBlockingQueue与SynhronoousQueue结合,LinkedtransferQueue是一种无界阻塞队列,底层基于单链表实现,其内部结构分为数据节点、请求节点,基于CAS无锁算法实现
95 0
BlockingQueue二
|
缓存 安全 Java
JUC - BlockingQueue
JUC - BlockingQueue
102 0
JUC - BlockingQueue
|
消息中间件 存储 Java
阻塞队列 BlockingQueue
学数据结构时学过队列,特点是FIFO,先进先出。那么什么阻塞队列呢?一起来看看。
阻塞队列 BlockingQueue
|
存储 缓存 安全
BlockingQueue 阻塞队列详解(上)
BlockingQueue 是一个 Queue , 它是一个线程安全的阻塞队列接口。 ​
256 0
BlockingQueue 阻塞队列详解(上)

热门文章

最新文章