并发编程
吾行远方
没有理想何必远方
展开
-
多线程容器
1、容器 1.1、同步容器与并发容器 同步容器 Vector、HashTable – JDK提供的同步容器类 Collections.synchronizedXXX 本质是对相应的容器进行包装 同步容器类的缺点 在单独使用里面的方法的时候,可以保证线程安全,但是,复合操作需要额外加锁来保证线程安全 使用Iterator迭代容器或使用使用for-each遍历容器,在迭代过程中修改容器会抛出Con...原创 2020-01-09 09:25:18 · 319 阅读 · 0 评论 -
原子类
1、什么是原子类 一度认为原子是不可分割的最小单位,故原子类可以认为其操作都是不可分割 为什么要有原子类? 对多线程访问同一个变量,我们需要加锁,而锁是比较消耗性能的,JDk1.5之后,新增的原子操作类提供了一种用法简单、性能高效、线程安全地更新一个变量的方式,这些类同样位于JUC包下的atomic包下,发展到JDk1.8,该包下共有17个类,囊括了原子更新基本类型、原子更新数组、原子更新属性、...原创 2020-01-09 09:24:02 · 129 阅读 · 0 评论 -
线程间的通信
1、wait、notify、notifyAll 何时使用 在多线程环境下,有时候一个线程的执行,依赖于另外一个线程的某种状态的改变,这个时候,我们就可以使用wait与notify或者notifyAll wait跟sleep的区别 wait会释放持有的锁,而sleep不会,sleep只是让线程在指定的时间内,不去抢占cpu的资源 注意点 wait notify必须放在同步代码块中, 且必须拥有当前...原创 2020-01-09 09:23:48 · 124 阅读 · 0 评论 -
并发编程
进程与线程的区别 进程:是系统进行分配和管理资源的基本单位 线程:进程的一个执行单元,是进程内调度的实体、是CPU调度和分派的基本单位,是比进程更小的独立运行的基本单位。 线程也被称为轻量级进程,线程是程序执行的最小单位。 一个程序至少一个进程,一个进程至少一个线程。 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段, ...原创 2020-01-09 09:22:29 · 237 阅读 · 0 评论