java基础之线程阻塞栈

潇湘剑雨 潇湘剑雨     2022-08-02     393

关键词:

    阻塞栈,与阻塞队列相似。不同点在于栈是“后入先出”的结构,每次操作的是栈顶,而队列是“先进先出”的结构,每次操作的是队列头;Java为阻塞栈定义了接口:java.util.concurrent.BlockingDeque,其实现类也比较多

package unit_fifteen;

import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;

/** 
* Java线程:新特征-阻塞栈
* 
*/ 
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("程序到此运行结束,即将退出----");
        } 
}

 

java基础之多线程

一、线程基本知识1、线程与进程  进程:执行中的程序  线程:轻量级的进程    线程本身不能单独进行,必须放在一个进程中才能执行。2、Java的线程模型  1、新建状态    线程被创建之后便处于新建状态。... 查看详情

java基础之线程

进程与线程进程:进程是指内存中运行得一个程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程是程序运行的一次过程,是系统运行程序的基本单位。线程:进程内部以个单独的独立执行单元... 查看详情

java并发专题之二java线程基础

使用线程更好的提高资源利用率,但也会带来上下文切换的消耗,频繁的内核态和用户态的切换消耗,如果代码设计不好,可能弊大于利。一、线程  进程是分配资源的最小单位,线程是程序执行的最小单位;线程是依附于进... 查看详情

java多线程系列---“基础篇”09之interrupt()和线程终止方式

转自:http://www.cnblogs.com/skywang12345/p/3479949.html(含部分修改)概要本章,会对线程的interrupt()中断和终止方式进行介绍。涉及到的内容包括:1.interrupt()说明2.终止线程的方式  2.1终止处于“阻塞状态”的线程  2.2终... 查看详情

java线程的堆栈跟踪之jstack篇

1.Jstack使用介绍该命令打印java线程的堆栈跟踪,可以得知哪些线程被阻塞或正等待,以便于查找如线程死锁的原因用法:jstack[option]pidjstack[option]executablecorejstack[option][[email protected]]remote-hostname-or-IP常用选项:-F当’jstack[-l]pid... 查看详情

java基础教程:多线程基础——阻塞队列

Java基础教程:多线程基础(3)——阻塞队列快速开始引入问题  生产者消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一存储空间,生产者向空间里生产数据,而消费者取走数据。模拟情景  ... 查看详情

线程小酌之java中的阻塞队列(代码片段)

...f0c;发现功能很强大,其中之一就是工作中多次用到的线程工具类BlockingQueue。在实际开发工作和面试过程中,经常会考察对于该工具类的使用和理解。1.什么是阻塞队列?阻塞队列(BlockingQueue)是一 查看详情

java并发之阻塞队列

...元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。同样,试图往已满的阻塞队列 查看详情

java多线程之线程运行状态(代码片段)

java线程的状态一共有6种,如下所示NEW:初始状态,线程被构建,但是还没有调用start()方法RUNNABLE:运行状态,java线程将操作系统中的就绪和运行两种状态笼统的称作运行态BLOCKED:阻塞状态,表示线程... 查看详情

java逆向基础之操作数栈

本文参考:http://www.vuln.cn/7115本地变量和操作数栈本地变量数组(LocalVariableArray)本地变量的数组包括方法执行所需要的所有变量,包括this的引用,所有方法参数和其他本地定义的变量。对于那些方法(静态方法staticmethod)参数... 查看详情

java逆向基础之常量入栈指令

本文参考:http://www.vuln.cn/7115常量入栈指令有iconst、bipush、sipush、ldc、ldc2_w分别对应不同的使用场景以下两个表简单总结了使用场景八大基本类型场景表常量类型常量范围指令×××int-1~5iconst_0~iconst_5iconst_m1-128~127bipush-32768~32767sipus... 查看详情

juc-多线程之阻塞队列blockingqueue(代码片段)

一、队列队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。和栈一样,队列是一种操作受限制的线性表,进行插入操作的端称为队尾,,进行删... 查看详情

java多线程系列--“juc线程池”04之线程池原理

...960.html本章介绍线程池的生命周期。在"Java多线程系列--“基础篇”01之基本概念"中,我们介绍过,线程有5种状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态。线程池也有5种状态;然而,线程池不同于线程,线程池... 查看详情

java基础篇之nio与aio

1.同步和异步同步:指一个任务运行完以后接着运行下一个任务异步:接到一个任务后开启一个新的线程运行此任务,基本不占用原线程时间2.阻塞与非阻塞阻塞:多个线程同时访问一份数据时,只有一个线程进行访问,其他处... 查看详情

多线程之volatile关键字

开始全文之前,先铺垫一下jvm基础知识以及线程栈:JVM栈是线程私有的,每个线程创建的同时都会创建JVM栈,JVM栈中存放的为当前线程中局部基本类型的变量(java中定义的八种基本类型:boolean、char、byte、short、int、long、float、... 查看详情

java多线程之线程状态总结

概述线程大家肯定不陌生,对于线程中的运行状态,自己经常搞混淆,这边按照下图记录下:线程一般来说有如下几种状态:新建,可运行,超时阻塞,等待阻塞,同步阻塞,死亡yeild:当线程执行了yield()方法后,将转到就绪状... 查看详情

源码角度了解阻塞队列之synchronousqueue(代码片段)

...步队列,它没有任何的容量,插入操作都必须等待另一个线程的相应删除操作从它的构造方法中我们可以看到,可以指定是否为公平的队列,如果是公平的使用队列,如果不是公平的,使用栈来存储put()方法publicvoidput(Ee)throwsInter... 查看详情

java线程通信之wait/notify机制

前言Java线程通信是将多个独立的线程个体进行关联处理,使得线程与线程之间能进行相互通信。比如线程A修改了对象的值,然后通知给线程B,使线程B能够知道线程A修改的值,这就是线程通信。wait/notify机制一个线程调用Object... 查看详情