【Java】の基础——几种线程同步方式
来源:互联网 发布:linux装java环境 编辑:程序博客网 时间:2024/05/17 23:01
- synchronized关键字
- 特点
- ReentrantLock类
- 特点
- waitnotifyAll 方式
- ThreadLocal
- Semaphore
- volatile关键字
synchronized关键字
- 可以修饰方法、对象、成员变量
- 是可重入锁
- 可以说是一个几种锁过程的封装:偏向锁、轻量锁、对象锁,自旋锁
特点
- 不可定时
- 不可中断
ReentrantLock类
可重入锁。(对于同一个线程,可以继续调用加锁的方法,而不会被挂起)
特点
- 可以设置超时时间
- 可以使用多个Condition
- 可以选择公平锁和非公平锁
- 可以获得正在等待线程的个数,计数器等
wait/notifyAll 方式
java中每个对象都拥有一个内置锁。
ThreadLocal
将每一个线程存取数据的行为加以隔离,实现的方法就是给予每个线程一个特定空间来保管该线程所独享的资源。
它主要由四个方法组成initialValue(),get(),set(T),remove()。
ThreadLocal是如何做到为每一个线程维护变量的副本的呢?其实实现的思路很简单:在ThreadLocal类中有一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值对应线程的变量副本。
Semaphore
Semaphore信号量被用于控制特定资源在同一个时间被访问的个数。
volatile关键字
保证线程间对统一变量可见性。
禁止指令重排序。
Volatile变量可以确保先行关系,即写操作会发生在后续的读操作之前, 但它并不能保证原子性。
阅读全文
0 0
- 【Java】の基础——几种线程同步方式
- java线程同步的几种方式
- Java线程同步的几种方式
- 黑马程序员——线程同步的几种方式
- 线程:几种同步方式
- 线程同步几种方式
- 线程同步的几种方式
- 线程同步几种方式的比较
- 线程同步的几种方式
- 线程同步的几种方式
- 4. 线程同步几种方式
- 线程同步控制的几种方式
- 线程同步的几种方式
- 实现线程同步的几种方式
- 线程同步的几种方式
- 线程同步的几种方式
- 线程同步的几种方式
- 线程同步的几种方式
- 数据结构——单链表模板类
- JavaScript内置对象
- 线程读写锁的实现
- 第三周第2次课
- 2017.9.24开学第四周周总结
- 【Java】の基础——几种线程同步方式
- 什么是流
- 遍历python字典几种方法
- 【Spark Java API】broadcast、accumulator
- 走迷宫,递归
- Android性能优化之app启动时间测量
- Linux(CentOS 7.3)使用yum安装MySQL详细步骤
- UE4蓝图制作场景小地图
- JSON的几种拼接方式