- 浏览: 953983 次
- 性别:
- 来自: 魔都
文章分类
- 全部博客 (745)
- MultiThread (19)
- My Plan (118)
- JavaBasic (61)
- MyInterview (104)
- InternetTechnique (5)
- ProjectConclusion (1)
- Maven (5)
- MogoDb (5)
- Hadoop (11)
- Memcached (6)
- TechniqueCollect (1)
- Ibaits (1)
- Android (34)
- ItLife (40)
- Tree (2)
- ProjectArchitect (7)
- Open Source (3)
- liunx (5)
- socket (8)
- Spring (27)
- DesginPattern (35)
- WebBasic (13)
- English (13)
- structs (1)
- structs2 (2)
- Oracle (17)
- Hibernate (2)
- JavaScript (4)
- Jdbc (1)
- Jvm (15)
- Ibatis (1)
- DataStructures (13)
- Https/Socket/Tcp/Ip (3)
- Linux (4)
- Webservice (7)
- Io (2)
- Svn (1)
- Css (1)
- Ajax (1)
- ExtJs (1)
- UML (2)
- DataBase (6)
- BankTechnique (3)
- SpringMvc (3)
- Nio (3)
- Load Balancing/Cluster (3)
- Tools (1)
- javaPerformanceOptimization (8)
- Lucene(SEO) (1)
- My Think (80)
- NodeJs (1)
- Quartz (1)
- Distributed-java (1)
- MySql (7)
- Project (4)
- junit (4)
- framework (1)
- enCache (1)
- git (2)
- SCJP (1)
- sd (1)
最新评论
-
lkjxshi:
你都这水平了还考这个证干嘛
SCJP 认证考试指南 -
钟逸华:
问的真多
百度java开发面试题(转) -
zuimeitulip:
觉得我就是这样的,从小阅读量就很少,导致现在的读的速度非常慢, ...
让读书成为一种习惯 -
DDT_123456:
我觉得你是不符合要求。问你hashmap的那个问题,你那样回答 ...
阿里面试2(转) -
jingjing0907:
刚刚写了很多读过此博客的感受,竟然没有发上去,以为我注册账号还 ...
让读书成为一种习惯
package cn.itcast.day3.thread; import java.util.Collections; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.atomic.AtomicInteger; public class BlockingQueueCommunication { /** * @param args */ public static void main(String[] args) { final Business business = new Business(); new Thread( new Runnable() { @Override public void run() { for(int i=1;i<=50;i++){ business.sub(i); } } } ).start(); for(int i=1;i<=50;i++){ business.main(i); } } static class Business { BlockingQueue<Integer> queue1 = new ArrayBlockingQueue<Integer>(1); BlockingQueue<Integer> queue2 = new ArrayBlockingQueue<Integer>(1); { Collections.synchronizedMap(null); try { System.out.println("xxxxxdfsdsafdsa"); queue2.put(1); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void sub(int i){ try { queue1.put(1); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } for(int j=1;j<=10;j++){ System.out.println("sub thread sequece of " + j + ",loop of " + i); } try { queue2.take(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void main(int i){ try { queue2.put(1); } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } for(int j=1;j<=100;j++){ System.out.println("main thread sequece of " + j + ",loop of " + i); } try { queue1.take(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
ArrayBlockingQueue(阻塞队列)只有put方法和take方法才具有阻塞功能
发表评论
-
子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。
2013-04-15 14:00 1272public class ThreadTest { ... -
java并发包(java.util.concurrent)
2013-03-26 23:46 2020java并发包(java.util.concurrent) ... -
java 死锁及解决
2013-03-19 22:54 961url:http://leowzy.iteye.com/bl ... -
断点续传的原理
2013-03-08 12:32 1173url:http://www.cnblogs.com/Kil ... -
《java并发编程实践》读书笔记
2012-08-21 23:07 1006文章链接:http://www.iteye.com/blogs ... -
ThreadLocal详解
2012-06-27 23:47 961文章链接: http://www.iteye.com/top ... -
多线程并发(java编程思想笔记)
2012-06-25 23:50 24611.Executor,java.util.concurr ... -
多线程例题(空中网)
2012-06-17 19:16 1026文章链接:http://blog.csdn ... -
多线程笔记(黑马)
2012-06-17 18:59 10241.多线程范围内间的线 ... -
设计缓冲系统(多线程)
2012-06-17 18:57 1051package cn.itcast.day3.thread; ... -
Java多线程与并发库高级应用(传智播客)
2012-06-13 15:14 3761------------------------------- ... -
多线程断点续传下载
2012-06-05 20:58 1795package cn.itcast.net.downlo ... -
java多线程断点续传
2012-06-05 10:00 1349在android下面的断点 ... -
多线程高新(黑马程序员)
2012-03-30 16:23 1235------------------------------- ... -
生产者/消费者JAVA多线程
2012-03-28 09:58 1059文章链接:http://blog.csdn.net/bnuch ... -
主线程跟子线程怎么通讯 java
2012-03-17 19:24 4630学到多线程,编了一个简单地电脑城进出货模拟系统。 代码有点长 ... -
主线程与子线程之间通讯, 子线程与子线程之间的通讯 Java
2012-03-17 19:19 5374线程之间的通讯可以有两种方法. 一.利用全局变量. 大家都可 ... -
理解多线程
2011-09-27 17:40 873一、理解多线程 多 ...
相关推荐
在Java中,`java.util.concurrent`包提供了多种阻塞队列实现,如`ArrayBlockingQueue`, `LinkedBlockingQueue`等。它们都实现了`BlockingQueue`接口,提供了一套线程安全的方法来添加和移除元素,如`put()`, `take()...
Java中的ArrayBlockingQueue和LinkedBlockingQueue都是典型的阻塞队列实现。 阻塞队列为线程间通信提供了便捷的机制,可以用来协调多个线程的运行,防止多线程直接访问共享资源导致的并发问题。例如,生产者-消费者...
ArrayBlockingQueue是一个基于固定数组实现的阻塞队列。它的容量在创建时就需要指定,并且不可变。队列内部采用双指针机制,一个指向头部,一个指向尾部,进行元素的入队和出队操作。ArrayBlockingQueue支持公平和非...
1. ArrayBlockingQueue:使用数组作为底层数据结构的阻塞队列。 2. LinkedBlockingQueue:使用链表作为底层数据结构的阻塞队列。 3. SynchronousQueue:一个不存储元素的阻塞队列,生产者和消费者需要同时存在。 4. ...
常见的阻塞队列实现包括ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue等。阻塞队列常被用作线程池的工作队列,连接生产者(添加任务的线程)和消费者(执行任务的线程),实现任务的异步处理。 ...
Java中的阻塞队列实现主要依赖于`java.util.concurrent`包下的几个类,如`BlockingQueue`接口、`ArrayBlockingQueue`、`LinkedBlockingQueue`等。`BlockingQueue`接口定义了一组操作,如`put`、`take`、`offer`等,...
然而,实际生产环境中,Java提供了更高级的并发工具,如`BlockingQueue`接口和其实现类,如`ArrayBlockingQueue`、`LinkedBlockingQueue`等,它们提供了更完善的线程安全和阻塞操作,是更为推荐的选择。
1. ArrayBlockingQueue:基于数组结构的有界阻塞队列。它有一个构造参数来定义队列的容量,并使用一个锁来实现线程间的同步。 2. LinkedBlockingQueue:基于链表结构的可选界阻塞队列。默认情况下是无界的,也可以...
1. **ArrayBlockingQueue**:基于数组结构实现的有界阻塞队列,初始化时需指定容量大小。 2. **LinkedBlockingQueue**:基于链表结构实现的无界阻塞队列,也可通过构造函数指定容量大小变为有界队列。 3. **...
在Java的`java.util.concurrent`包中,提供了多种实现阻塞队列的类,如`ArrayBlockingQueue`, `LinkedBlockingQueue`, `PriorityBlockingQueue`等。 阻塞队列的核心特性在于其“阻塞”行为:当队列为空时,尝试获取...
本实例中使用了`ArrayBlockingQueue`,这是最常用的阻塞队列实现之一,它是一个有界队列,能够按FIFO(先进先出)的顺序处理元素。创建`ArrayBlockingQueue`时,需要指定队列的容量,这有助于防止内存溢出,因为队列...
1. `ArrayBlockingQueue`: 一个基于固定大小数组的阻塞队列,公平或非公平的锁策略可选。 2. `LinkedBlockingQueue`: 基于链表结构的阻塞队列,容量可以无限大,但内部维护了一个容量参数来控制性能。 3. `...
在Java中,阻塞队列的实现类包括ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue等。它们都实现了BlockingQueue接口,提供了put()和take()方法,分别用于插入和移除元素,这两个方法在队列满或空时...
Java中的阻塞队列是一种特殊的线程安全的数据结构,它在多线程环境下用于高效地处理生产者-消费者问题。阻塞队列的核心特性在于当队列为空时,尝试获取元素的线程会被阻塞,直到队列中有元素可用;同样,当队列满时...
2. **队列实现**:接着可能会讲解几种具体的阻塞队列实现,比如`ArrayBlockingQueue`是基于数组的有界队列,`LinkedBlockingQueue`基于链表,以及`PriorityBlockingQueue`是无界的优先级队列,它们各自的特点和适用...
Java源码解析阻塞队列ArrayBlockingQueue功能简介 ArrayBlockingQueue是Java中一个重要的阻塞队列实现,它基于数组实现了有界阻塞队列,提供FIFO(First-In-First-Out)功能。该队列的头元素是最长时间呆在队列中的...
ArrayBlockingQueue是由数组支持的有界阻塞队列,次队列按照FIFO(先进先出)原则,当队列已经填满,在去增加则会导致阻塞,这种阻塞类似线程阻塞。 ArrayBlockingQueue提供的增加和取出方法总结 使用...
Java源码解析阻塞队列ArrayBlockingQueue介绍 Java源码解析阻塞队列ArrayBlockingQueue介绍是Java中的一种阻塞队列实现,使用ReentrantLock和Condition来实现同步和阻塞机制。本文将对ArrayBlockingQueue的源码进行...
阻塞队列与普通队列的不同在于,当队列是空的时候,从队列中获取元素的操作将会被阻塞,或者当队列满时,往队列里面添加元素将会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列...
在Java中,自Java 5.0起,`java.util.concurrent`包提供了多种阻塞队列的实现,例如`ArrayBlockingQueue`、`LinkedBlockingQueue`、`PriorityBlockingQueue`等。这些类都实现了`java.util.concurrent.BlockingQueue`...