Java阻塞队列
什么是阻塞队列?有什么适用场景? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是: 在队列为空时,获取元素的线程会等待队列变为非空。 当队列满时,存储元素的线程会等待队列可用。 阻塞队列常用于生产者和消费者的场景: 生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程 阻塞队列就是生产者存放元素的容器,而消费者也只...
什么是阻塞队列?有什么适用场景? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是: 在队列为空时,获取元素的线程会等待队列变为非空。 当队列满时,存储元素的线程会等待队列可用。 阻塞队列常用于生产者和消费者的场景: 生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程 阻塞队列就是生产者存放元素的容器,而消费者也只...
synchronized-1 synchronized-2导图 volatile synchronized 的原理是什么? synchronized是 Java 内置的关键字,它提供了一种独占的加锁方式。 synchronized的获取和释放锁由JVM实现,用户不需要显示的释放锁,非常方便。 然而,synchronized 也有一定的局限性。 ...
Java获取当前类名的两种方法: 适用于非静态方法:this.getClass().getName() 适用于静态方法:Thread.currentThread().getStackTrace()[1].getClassName() 获取类名: 1、在类的实例中可使用this.getClass().getName();但在static method中不能使用该方法; 2、在stat...
线程池 什么是 Executor 框架? Executor 框架,是一个根据一组执行策略调用,调度,执行和控制的异步任务的框架。 无限制的创建线程,会引起应用程序内存溢出。所以创建一个线程池是个更好的的解决方案,因为可以限制线程的数量并且可以回收再利用这些线程。利用 Executor 框架,可以非常方便的创建一个线程池。 🦅 为什么使用 Executor 框架? 每次执行任务...
通知 + 等待 简述线程、进程、程序的基本概念? 🦅 程序 程序,是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。 🦅 进程 进程,是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。简单来说,一个进程就是一个执行中的程序,它在计算机中一个指令接着一个指令地执行着,同时...
java正则表达式用法 在其他语言中,\表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。 在 Java 中,\表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。 所以,在其他的语言中(如Perl),一个反斜杠,而在 Java 中正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用。也可以简单的理解在 Java 的正则表达...
Semaphore 是什么? Semaphore ,是一种新的同步类,它是一个计数信号。从概念上讲,从概念上讲,信号量维护了一个许可集合。 如有必要,在许可可用前会阻塞每一个 #acquire() 方法,然后再获取该许可。 每个 #release() 方法,添加一个许可,从而可能释放一个正在阻塞的获取者。 但是,不使用实际的许可对象,Semaphore 只对可用许可的数量进...
什么是并发容器的实现? 何为同步容器?可以简单地理解为通过 synchronized来实现同步的容器,如果有多个线程调用同步容器的方法,它们将会串行执行。 比如 Vector,Hashtable,以及 Collections#synchronizedSet(),Collections#synchronizedList() 等方法返回的容器。 可以通过查看 Vector,Hash...
什么是原子操作? 原子操作(Atomic Operation),意为”不可被中断的一个或一系列操作”。 处理器使用基于对缓存加锁或总线加锁的方式,来实现多处理器之间的原子操作。 在 Java 中,可以通过锁和循环 CAS 的方式来实现原子操作。CAS操作 —— Compare & Set ,或是 Compare & Swap ,现在几乎所有的 CPU 指令都支持...
关于 Java 内存模型,涉及的内容会很多,所以建议胖友看如下的 《深入Java内存模型.pdf》 这本小书。 然后,看完之后你肯定会忘记,就可以靠 《《深入理解 Java 内存模型》读书笔记》 来补刀。 再另外,《深入拆解 Java 虚拟机》 的 「第五部分 高效并发」 也推荐阅读。 什么是 Java 内存模型? Java 虚拟机规范中试图定义一种 Java 内存模型(Java M...