
多线程
哥的拽你不懂
这个作者很懒,什么都没留下…
展开
-
Java 中的线程池
1. 线程池的实现原理(1)线程池的主要流程如下图所示:线程池判断核心线程池是否都在执行任务,不是,则创建一个新的工作线程来执行任务,是,则进入下个流程;线程池判断工作队列是否已经满,没满,则将新提交的任务存储在这个工作队列里,满了,则进入下一个流程;线程池判断线程池的线程是否都处于工作状态,没有,则创建一个新的工作线程来执行任务,是,则交给饱和策略来处理这个任务;(2)ThreadPollExecutor 执行 execute 方法的 4 中情况如果当前运行的线程少于 coreP原创 2020-09-14 21:54:16 · 218 阅读 · 0 评论 -
Java 中的阻塞队列
1. 什么时阻塞队列阻塞队列 是一个支持两个附加操作的队列,如下:支持阻塞的插入方式 :当队列满时,队列会阻塞插入元素的线程,直到队列不满;支持阻塞的移除方式 :当队列为空时,获取元素的队列会等待队列为非空;2. 插入和移除操作的四种处理方式方法/处理方式抛出异常返回特殊值一直阻塞超时退出插入方式add(e)offer(e)put(e)offer(e,time,unit)移除方法remove()poll()take()poll(time.unit原创 2020-09-13 21:37:13 · 187 阅读 · 0 评论 -
ConcurrentHashMap 实现原理与使用
一、ConcurrentHashMapConcurrentHashMap 采用锁分段技术有效提高了并发访问率,首先将数据分成一段一段地存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问;1. ConcurrentHashMap 的结构ConcurrentHashMap 由 Segment 数组结构 和 HashEnty 数组结构组成,一个ConcurrentHashMap 里面包含一个 Segment 数组(数组链表结构),一个 Segmen原创 2020-09-13 18:34:07 · 5267 阅读 · 2 评论 -
Java 中的锁
一、Lock 接口1. 主要特性特性描述尝试非阻塞获取锁当前线程尝试获取锁,如果这一刻锁没有被其他线程获取到,则成功获取并持有锁;能被中断地获取锁获取到锁的线程能够响应中断时,中断异常将会被抛出,同时锁会被释放;超时获取锁在指定的截止时间之前获取锁,如果截至时间到了任就无法获取锁,则返回;2. API方法名称描述void lock()获取锁,调用该方法当前线程将会获取锁,当锁获得后,从该方法返回void lockInterruot原创 2020-09-10 12:44:47 · 127 阅读 · 0 评论 -
Java 内存模型
一、Java 内存模型的基础1 . 并发编程模型的两个关键问题通信 :是指线程之间以何种机制来交换信息,通信机制为共享内存 和 消息传递;同步 :是指程序中用于控制不同线程间操作发生相对顺序的机制;2 . Java 内存模型的抽象结构Java 中实例域,静态域和数组元素都存储在堆内存中,堆内存在线程之间共享,而局部变量,方法参数和异常处理器参数不会在线程之间共享JMM 定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存中,每个线程都有一个私有的本地内存,本地内存中存储了该原创 2020-09-06 11:44:33 · 168 阅读 · 0 评论 -
Java并发机制的底层实现原理
一、volatile 的应用volatile 是轻量级的 synchronized ,它在多处理器开发中保证了共享变量的可见性,可见性是指当一个线程修改一个共享变量时,另一个线程能读到这个修改的值;1 . 定义Java 编程语言允许线程访问共享变量,为了确保共享变量能被准确个一致地更新,线程应该确保通过排他锁单独获得这个变量。如果一个字段被声明称 volatile,Java内存模型确保所有线程所看到的这个变量的值是一致的。2 . 实现原理(1)LOCK 前缀指令会引起处理器缓存回写到内存原创 2020-09-04 09:00:25 · 146 阅读 · 0 评论 -
多线程
一、线程是什么?与进程有什么区别?线程也被称为轻量级进程,也是程序执行的最小单元,一个进程可以拥有多个线程,各个线程之间共享程序的内存空间(代码段,数据段,堆空间),以及一些进程的资源(列入打开的文件),但是各个线程拥有自己的栈空间。二、使用多线程的优点(1)使用过线程可以减少程序的响应时间。在单线程(单线程指的是程序执行过程中只有一个有效操作的序列,不同操作之间都有明确的执行先后顺...原创 2020-02-09 08:21:14 · 121 阅读 · 0 评论