1 前言 与普通队列相比,阻塞队列另外支持两个附加操作,这两个附加的操作支持阻塞的插入和移除方法。 ①支持阻塞的插入方法:当队列满时,队列会阻塞插入元素的线程,直到队列不满。 ②支持阻塞的移除方法:在队列为空时,获取元素的线程会等待队列变为非空。 一般的阻塞队列相比,只能在“尾部入队、在头部出队”, ...
分类:
数据库 时间:
2020-04-22 13:17:35
阅读次数:
67
大家好!我是本号唯一官方指定没头屑的小便--怕屁林。 JUC是什么东西?我相信很多经验尚浅的小伙伴部分都会为之一懵,我也是,三个字母都会读,连在一起就不知道在说什么,其实如果把它的全称写出来,“java.util.concurrent”,这就很清楚了。这个jar包的内容就是,atomic类、vola ...
分类:
其他好文 时间:
2020-04-22 12:51:33
阅读次数:
77
概 sleep() 将进程放入等待队列,休眠结束后,进入运行队列获取cpu分配,sched_yield()将进程分配到过期队列,所有进程都运行完成后才会运行 正文 进程调度队列 操作系统的进程调度有三大队列: 三个队列:运行队列,过期队列,等待队列 1.等待队列:休眠(或者阻塞)的进程放在等待队列里 ...
分类:
其他好文 时间:
2020-04-14 00:32:30
阅读次数:
72
先说下 ThreadPoolExecutor 的基本原理:1. 当提交一个任务时,如果线程数没有达到coreSize,那么就会新建一个线程,并绑定该任务,直到数量到达coreSize前都不会重用之前的线程2.到达后,提交的任务都会放到一个等待队列中进行等待,线程池中的线程会使用take()阻塞的从等 ...
分类:
其他好文 时间:
2020-04-07 15:45:58
阅读次数:
56
1.wait()方法和sleep()方法: wait()方法在等待中释放锁;sleep()在等待的时候不会释放锁,抱着锁睡眠。 2.notify(): 随机唤醒一个线程,将等待队列中的一个等待线程从等待队列中移到同步队列中。 public class Demo_Print { public stat ...
分类:
编程语言 时间:
2020-04-04 14:27:06
阅读次数:
73
前言: 一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在Java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池等待队列 中)。 取到锁后,他就开始执行同步代码(被synch ...
分类:
编程语言 时间:
2020-03-24 23:11:43
阅读次数:
90
知识点提前预知: Java.util.concurrent.ThreadPoolExecutor类是ExecutorSerivce接口的具体实现。ThreadPoolExecutor使用线程池中的一个线程来执行给定的任务(Runnable或者Runnable)。Executor是接口 只能使用exe ...
分类:
其他好文 时间:
2020-03-23 17:04:35
阅读次数:
58
本次内容主要介绍AQS、AQS的设计及使用、ReentrantLock、ReentrantReadWriteLock以及手写一个可重入独占锁 1、什么是AQS? AQS,队列同步器AbstractQueuedSynchronizer的简写,JDK1.5引入的,是用来构建锁或者其他同步组件的基础框架, ...
分类:
编程语言 时间:
2020-03-23 09:48:43
阅读次数:
73
1.简介 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。 1)支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。 2)支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会等待队列变为非空。 阻塞队列常用于 ...
分类:
其他好文 时间:
2020-03-08 17:45:40
阅读次数:
57
一、AQS概念 队列同步器AQS(AbstractQueuedSynchronizer)是用来构建锁或者其它同步组件的基础框架,使用int成员变量state表示同步状态,通过内部的FIFO双向等待队列来完成线程的排队工作。同步器中的等待队列可以简单的理解为"等待锁的线程队列"。 子类通过继承AQS并 ...
分类:
其他好文 时间:
2020-03-02 23:22:27
阅读次数:
113