操作系统 多道 、分时、实时 同步异步 同步:一件事情完成后再做另一件事 异步:同时做多件事 阻塞和非阻塞 阻塞:recv,accept,recvfrom 会让整个进程进入阻塞队列 非阻塞:进程只会在就绪和 运行状态中切换 进程三状态:就绪 运行 阻塞 并发并行 并发是包含并行的 并发:宏观上多个程 ...
分类:
系统相关 时间:
2018-09-20 23:27:26
阅读次数:
205
在介绍Java的阻塞队列之前,我们简单介绍一下队列。 队列 队列是一种数据结构.它有两个基本操作:在队列尾部加人一个元素,和从队列头部移除一个元素就是说,队列以一种先进先出的方式管理数据,如果你试图向一个已经满了的阻塞队列中添加一个元素或者是从一个空的阻塞队列中移除一个元索,将导致线程阻塞.在多线程 ...
分类:
编程语言 时间:
2018-09-19 17:22:12
阅读次数:
189
何为阻塞队列,其与普通队列有何差别? 总的来说,就是能够在适当的时候阻塞"存"和"取"两个操作,以达到控制任务流程的效果。阻塞队列提供了可阻塞的put和take方法。如果队列已经满了,那么put方法将阻塞直到有空间可用;如果队列为空,那么take方法将会阻塞直到有元素可用。 阻塞队列接口及实现来自于 ...
分类:
其他好文 时间:
2018-09-03 13:52:51
阅读次数:
176
概述 LinkedBlockingQueue内部由单链表实现,只能从head取元素,从tail添加元素。添加元素和获取元素都有独立的锁,也就是说LinkedBlockingQueue是读写分离的,读写操作可以并行执行。LinkedBlockingQueue采用可重入锁(ReentrantLock)来 ...
分类:
数据库 时间:
2018-08-30 15:44:33
阅读次数:
185
■ 并发原理 单核系统:线程交替执行,由于交替又快又多,给人一种同时执行的感觉多核系统:不仅可以交替执行线程,而且可以重叠执行线程补充: 本章指的并发主要指的是线程间的并发 ■ 常见的并发机制 ■ 不同系统的并发机制 UNIX:管道、消息、共享内存、信号量、信号 Linux内核:原子操作、自旋锁、信 ...
分类:
编程语言 时间:
2018-08-27 14:02:30
阅读次数:
205
对于一个无界的阻塞队列而言,其实现非常简单,即用一个锁(锁队列)+ 一个条件变量(判空)即可。那么对于一个有界阻塞队列而言,其队列的容量有上限,其实只要再加一个条件变量用来判断是否满即可。 综上,我们需要 mutex: 保护队列的读写操作 notEmptyCV: 条件变量,在take时wait, 在 ...
分类:
编程语言 时间:
2018-08-27 12:49:01
阅读次数:
318
在看下文之前,先给大家科普一点基础知识 Runable:线程任务类接口,没有返回值 Callable:与上面的不同就是有返回值 Executor:定义了线程池执行任务的接口,不过只定义了Runable的,也就是execute ExecutorService:是线程池的规范,像ThreadPoolEx ...
分类:
Web程序 时间:
2018-08-20 01:12:46
阅读次数:
5305
ExecutorCompletionService:提交任务线程,每一个线程任务直线完成后,将返回值放在阻塞队列中,然后可以通过阻塞队列的take()方法返回 对应线程的执行结果,是Executor和BlockingQueue的结合体,xecutorCompletionService在构造函数中会创 ...
分类:
其他好文 时间:
2018-08-08 15:06:42
阅读次数:
133
生产者-消费者模式 1. 阻塞队列 生产者消费者模式中,一般采用阻塞队列来实现。阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。 2. 阻塞队列的运用 当队列中没有数据的 ...
分类:
其他好文 时间:
2018-08-05 01:09:44
阅读次数:
170
一、简介 已经了解过了BlockingQueue阻塞队列,这一篇就直接开始入主题LinkedBlockingQueue,这是一个链表实现的有界阻塞队列,同样按照先进先出FIFO原则存取元素,其吞吐量高于之前学习的ArrayBlockingQueue。 二、Demo和学习 因为LinkedBlocki ...
分类:
数据库 时间:
2018-08-03 14:28:01
阅读次数:
456