Java线程:新特征-阻塞栈
对于阻塞栈,与阻塞队列相似。不同点在于栈是“后入先出”的结构,每次操作的是栈顶,而队列是“先进先出”的结构,每次操作的是队列头。
这里要特别说明一点的是,阻塞栈是Java6的新特征。、
Java为阻塞栈定义了接口:java.util.concurrent.BlockingDeque,其实现类也比较多,具体可以查看JavaAPI文档。
下面看一个简单例子:
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;
/**
* Java线程:新特征-阻塞栈
*
* @author leizhimin 2009-11-5 15:34:29
*/
public class Test {
public static void main(String[] args) throws InterruptedException {
BlockingDeque bDeque = new LinkedBlockingDeque(20);
for (int i = 0; i < 30; i++) {
//将指定元素添加到此阻塞栈中,如果没有可用空间,将一直等待(如果有必要)。
bDeque.putFirst(i);
System.out.println("向阻塞栈中添加了元素:" + i);
}
System.out.println("程序到此运行结束,即将退出----");
}
}
输出结果:
向阻塞栈中添加了元素:0
向阻塞栈中添加了元素:1
向阻塞栈中添加了元素:2
向阻塞栈中添加了元素:3
向阻塞栈中添加了元素:4
向阻塞栈中添加了元素:5
向阻塞栈中添加了元素:6
向阻塞栈中添加了元素:7
向阻塞栈中添加了元素:8
向阻塞栈中添加了元素:9
向阻塞栈中添加了元素:10
向阻塞栈中添加了元素:11
向阻塞栈中添加了元素:12
向阻塞栈中添加了元素:13
向阻塞栈中添加了元素:14
向阻塞栈中添加了元素:15
向阻塞栈中添加了元素:16
向阻塞栈中添加了元素:17
向阻塞栈中添加了元素:18
向阻塞栈中添加了元素:19
从上面结果可以看到,程序并没结束,二是阻塞住了,原因是栈已经满了,后面追加元素的操作都被阻塞了。
本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/222530
本文出自 51CTO.COM技术博客
分享到:
相关推荐
Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 ...Java线程:新特征-阻塞栈 Java线程:新特征-条件变量 Java线程:新特征-原子量 Java线程:新特征-障碍器 Java线程:大总结
Java线程:新特征-阻塞栈 Java线程:新特征-条件变量 Java线程:新特征-原子量 Java线程:新特征-障碍器 Java线程:深入ThreadLocal 一、标准例子 二、不用ThreadLocal 三、自己实现个ThreadLocal 四、透过...
#### 十八、Java线程:新特征-阻塞栈 阻塞栈是一种特殊的数据结构,与阻塞队列类似,当栈为空时,出栈操作会被阻塞;当栈满时,入栈操作会被阻塞。 #### 十九、Java线程:新特征-条件变量 条件变量是 `java.util....
#### 十八、Java线程:新特征-阻塞栈 阻塞栈是阻塞队列的一种变体,它遵循后进先出(LIFO)原则。 #### 十九、Java线程:新特征-条件变量 条件变量允许线程等待某个条件成立后再继续执行,是实现高级同步控制的...
#### 十四、Java线程:新特征-阻塞队列与阻塞栈 - **阻塞队列**: - `BlockingQueue` 是一种特殊类型的队列,它提供了额外的阻塞行为。 - 当队列为空时,从队列中取元素的操作将会阻塞;当队列满时,往队列里添加...
#### 十一、Java线程:新特征 - **线程池** `ExecutorService` 和 `Executors` 提供了一种高效地管理线程的方式,减少了线程创建和销毁的开销。 - **有返回值的线程** 通过 `Callable` 接口和 `Future` 类可以...
- Java线程有五种基本状态:新建(`NEW`)、可运行(`RUNNABLE`)、阻塞(`BLOCKED`)、等待(`WAITING`)和终止(`TERMINATED`)。 - **线程控制方法:** - `start()`:启动线程。 - `join()`:等待当前线程结束。 - `...
### Java线程培训内部资料深度解析 #### 一、线程基本概念 线程作为并发执行的基本单位,是操作系统为了实现资源的有效利用和任务的高效处理而设计的一种机制。在Java中,线程是一个轻量级的过程,它可以独立于...
Java通过Thread类来表示线程,每个线程都有自己的程序计数器、虚拟机栈、本地方法栈和堆。线程的创建可以通过继承Thread类或实现Runnable接口,然后通过start()方法启动。线程的生命周期包括新建、就绪、运行、阻塞...
**七、Java线程的新特性** 1. **线程池**:`ExecutorService`管理线程,提高性能,避免资源浪费。 2. **有返回值的线程**:`Future`和`Callable`接口组合实现。 3. **锁**:`java.util.concurrent.locks`包提供了更...
以上总结了IT面试中常见的知识点,涵盖了进程与线程状态、输入输出流、集合框架、Java内存模型、多态、JDK 1.5新特性、设计模式、Java中的锁机制、JVM基础知识以及异常处理等多个方面。通过掌握这些核心概念和技术,...
- `newCachedThreadPool`:根据需要创建新线程。 - `newSingleThreadExecutor`:单个后台线程。 - `newScheduledThreadPool`:定时任务。 - **锁机制:** - **线程安全问题**:多个线程共享资源时,避免竞争...
#### Java线程:volatile关键字与新特征 `volatile`关键字用于保证变量的可见性和禁止指令重排序,适用于不需要复杂同步机制的情况下的简单变量读写操作。Java新特性中引入了线程池、`Future`和`Callable`接口支持...
在准备IBM公司的Java面试时,了解相关知识点是至关重要的。以下是一些可能出现在IBM Java面试中的核心主题,以及对它们的详细解释: 1. **Java基础:** - **类与对象**:理解面向对象编程的基本概念,如封装、继承...
在准备华为Java面试时,了解常见问题和经验分享至关重要。华为作为全球领先的电信解决方案供应商,其面试过程往往注重技术深度、问题解决能力和实际项目经验。以下是一些可能出现在华为Java面试中的关键知识点: 1....