- 浏览: 447185 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
飞天奔月:
我来个简单点的代码 使用 LinkedHashSetpubli ...
ArrayList去重 -
飞天奔月:
public static <T> List< ...
ArrayList去重 -
aaron7524:
事务隔离级别 -
月陨殇:
wlh269 写道rswh110 写道lz内容写的不错,就是略 ...
事务隔离级别 -
lnx1824:
我的更奇怪,在本地静态的可以,放jetty里的页面后就不然,都 ...
JS得到上传图片尺寸
ArrayBlockingQueue为阻塞队列,加入和取出元素都是阻塞的!构造方法提供队列的长度
例1:
例2:
例1:
package org.test.concurrent; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class BlockingQueueTest { /** *//** * 定义装苹果的篮子 */ public static class Basket{ // 篮子,能够容纳3个苹果 BlockingQueue<String> basket = new ArrayBlockingQueue<String>(3); // 生产苹果,放入篮子 public void produce() throws InterruptedException{ // put方法放入一个苹果,若basket满了,等到basket有位置 basket.put("An apple"); } // 消费苹果,从篮子中取走 public String consume() throws InterruptedException{ // get方法取出一个苹果,若basket为空,等到basket有苹果为止 return basket.take(); } } // 测试方法 public static void testBasket() { // 建立一个装苹果的篮子 final Basket basket = new Basket(); // 定义苹果生产者 class Producer implements Runnable { public void run() { try { while (true) { // 生产苹果 // System.out.println("生产者准备生产苹果:"+ System.currentTimeMillis()); basket.produce(); System.out.println("生产者生产苹果完毕:" +System.currentTimeMillis()+"篮子里有多少苹果:"+basket.basket.size()); // 休眠300ms Thread.sleep(300); } } catch (InterruptedException ex) { } } } // 定义苹果消费者 class Consumer implements Runnable { public void run() { try { while (true) { // 消费苹果 /*System.out.println("消费者准备消费苹果:" + System.currentTimeMillis());*/ basket.consume(); System.out.println("消费者消费苹果完毕:" + System.currentTimeMillis()+"篮子里有多少苹果:"+basket.basket.size()); // 休眠1000ms Thread.sleep(1000); } } catch (InterruptedException ex) { } } } ExecutorService service = Executors.newCachedThreadPool(); Producer producer = new Producer(); Consumer consumer = new Consumer(); service.submit(producer); service.submit(consumer); // 程序运行5s后,所有任务停止 // service.shutdownNow(); } public static void main(String[] args) { BlockingQueueTest.testBasket(); } }
例2:
package org.test.concurrent; package com.hollyinfo.cuibao.biz; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import com.hollyinfo.cuibao.logger.HollyinfoLog; import com.hollyinfo.cuibao.logger.HollyinfoLogger; import com.hollyinfo.cuibao.model.Basket; import com.hollyinfo.cuibao.util.SystemParameter; import com.hollyinfo.cuibao.webservice.LogServer; public class BlockingQueueBiz { private static final HollyinfoLog LOG = HollyinfoLogger.getLog(LogServer.class); private static final long serialVersionUID = 1L; //私有的静态的实例 public Basket basket=null; private static BlockingQueueBiz instance = new BlockingQueueBiz(); //私有的构造方法 private BlockingQueueBiz() { basket= Basket.getInstance(); process(); } //公有静态的访问接口,返回当前类的实例 public static BlockingQueueBiz getInstance() { return instance; } public void process() { class Producer implements Runnable { public void run() { while (true) { try { basket.produce("ss"); Thread.sleep(1000); } catch (Exception ex) { ex.printStackTrace(); } } } } class Consumer implements Runnable { public void run() { while (true) { try { String p2=basket.consume(); LogBizImpl.getInstance().SynchLog(SystemParameter.lua_path, p2); Thread.sleep(1000); } catch (Exception ex) { ex.printStackTrace(); } catch (Error ex) { ex.printStackTrace(); } } } } ExecutorService service = Executors.newCachedThreadPool(); Consumer consumer = new Consumer(); service.submit(consumer); Consumer produce = new Consumer(); service.submit(produce); //service.shutdownNow(); } }
发表评论
-
java开发实战视频详解
2017-07-02 08:09 486java开发实战视频详解 链接: http://pan.bai ... -
ArrayList去重
2013-04-25 10:18 3200public static List removeDuplic ... -
java ArrayList 自定义排序
2013-04-22 11:39 2119import java.util.ArrayList; imp ... -
按照指定编码读取配置文件
2012-12-13 10:17 844BufferedReader reader = new Buf ... -
java读取系统编码
2012-12-13 09:45 863public static void main(String[ ... -
Axis2和现有项目的集成
2011-08-11 10:08 1363axis2和现有项目集成 1.下载axis2-1.5-war. ... -
axis2和JDK1.5开发(文件传输服务)详解二(图解)
2010-06-28 16:36 22485.生成webservice服务端代 ... -
产生随机字符串
2010-05-05 17:13 1028import java.util.Random; p ... -
常用IO操作
2009-09-22 13:22 1261例子:写文件,在文件末尾追加文字并且指定输出文件内容字符编码为 ... -
FileChannel锁定文件
2009-09-22 10:52 2379当FileLock fl = fc.tryLock();执行成 ... -
SOCKET 文件传输
2009-09-21 15:47 4214要求将服务端文件夹A下的文件拷贝到客户端文件A下 删除服务端文 ... -
ZIP 压缩 和解压缩
2009-09-21 15:40 1086package com.socket.zip.util; ... -
Oracle number类型查询精度丢失问题
2009-08-21 16:00 6729一、需求中要求查到一个字段的值然后保持小数点后2位 ... -
Oracle number类型数据取出来后四舍五入到小数点后2位
2009-08-19 10:46 8062package com.wlh.test; impo ... -
将汉字编码为unicode
2009-07-28 10:26 848package test; import java. ... -
验证码
2009-07-05 17:29 1237验证servlet: package edu.yale. ... -
java.util.Date对象和String对象转换 SimpleDateFormat
2009-06-30 15:35 3033import java.text.ParseExcept ... -
Socket高级编程 多客户端
2009-06-26 14:03 2531客户端: package com.wlh.test; ... -
进制转换
2009-06-18 12:48 112716进制和字符串之间转换--- import java ... -
bat 命令学习
2009-06-01 23:59 10921.Echo 命令 打开回显或关闭请求回显功能,或显示消 ...
相关推荐
支持多线程的阻塞队列,使用模板技术,可存储任意类型数据
java中,常用的阻塞式队列Demo。包含:ArrayBlockingQueue、LinkedQueue、PriorityBlockingQueue
实现java模拟阻塞队列的例子,该代码包括,阻塞队列实现生产者,消费者。和模拟阻塞队列实现生产者及消费者模式,帮助你更好的理解java多线程
Java实现简单的阻塞队列2种方式,1使用wait(),notify();2使用countdownlatch实现
讲述线程池原理,线程池使用场景和注意事项,手动创建线程池方法,注意事项,阻塞队列的相关知识
14-阻塞队列BlockingQueue实战及其原理分析二.pdf
并发-线程池和阻塞队列 并发-线程池和阻塞队列 并发-线程池和阻塞队列
我们来讨论另外一类容器:阻塞队列。 在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。 使用非阻塞队列的时候有一个很大问题是:它不会对...
阻塞队列详解
c_c++阻塞队列的代码
主要介绍了剖析Java中阻塞队列的实现原理及应用场景,这里也对阻塞和非阻塞队列的不同之处进行了对比,需要的朋友可以参考下
并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
基于Android操作系统上开发的一款软件,成功模拟了多个程序的创建、执行、阻塞等状态,模拟了执行队列、阻塞队列、就绪队列 - 运行中有什么问题可以私聊博主,本人高级安卓工程师,主页置顶有常见爆红解决的方法 ##...
c++11 实现的阻塞队列
day19_阻塞队列、线程池、File类、递归.pdf
阻塞队列是多线程中常用的数据结构,对于实现多线程之间的数据交换、同步等有很大作用。 阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从队列里取元素的线程。简而言之,阻塞队列...
10、阻塞队列BlockingQueue实战及其原理分析_
java阻塞队列(Blocking Queue)是一个支持两个附加操作的队列.txt
Java并发编程(21)并发新特性—阻塞队列和阻塞栈(含代码)编程开发技术共8页.pdf.zip
java阻塞队列实现原理及实例解析.docx