- 博客(7)
- 收藏
- 关注
原创 JAVA并发编程学习笔记10-volatile
JAVA并发编程学习笔记10-volatile概念JMM(JAVA内存模型)常见概念可见性指令重排序概念volatile关键字是由JVM提供的最轻量级的同步机制,它能保证内存可见性和防止指令重排序。JMM(JAVA内存模型)常见概念原子性:保证指令不会受到上下文切换的影响有序性:保证指令不会受到CPU并行优化的影响可见性:保证指令不会受到CPU缓存的影响可见性多核CPU,由于CPU速度远大于内存速度,故在CPU和内存之间,存在缓存,可以一定程度降低两者之间的差距。但也因此出现了主存和缓
2020-12-22 23:41:15 242 1
原创 JAVA并发编程学习笔记09-LockSupport
JAVA并发编程学习笔记09-LockSupport基本使用关键方法1.先调用park()再调用unpark()方法2.先调用unpark()再调用park()方法原理区别wait()和notify()基本使用关键方法park():使当前线程暂停,类似wait()方法unpark(Thread thread):唤醒指定线程,类似notify()方法1.先调用park()再调用unpark()方法@Slf4jpublic class Test { public static voi
2020-12-21 17:54:28 186
原创 JAVA并发编程学习笔记08-ReentrantLock
JAVA并发编程学习笔记08-ReentrantLock区别synchnorized二级目录三级目录区别synchnorized可中断可设置超时时间可设置公平锁需要手动开关锁支持多个条件变量二级目录三级目录
2020-12-17 16:57:05 156
原创 JAVA并发编程学习笔记07-死锁
JAVA并发编程学习笔记07-死锁什么是死锁如何避免死锁方法1:按相同顺序加锁方法2:设置过期时间什么是死锁由于直接将synchronized关键字加在方法上,会造成同步代码区域过广,导致并发效率很低,故往往会优化只加尽可能少的代码块,减少锁的粒度,但也因此会出现死锁的情况。@Slf4jpublic class Test03 { public static void main(String[] args) { Object lockA = new Object();
2020-12-12 00:12:01 147
原创 JAVA并发编程学习笔记06-synchronized及锁优化
JAVA并发编程学习笔记06-synchronized及锁优化monitor二级目录三级目录monitor二级目录三级目录
2020-12-07 18:05:20 136
原创 JAVA并发编程学习笔记05-线程通信
JAVA并发编程学习笔记05-线程通信两个线程之间的通信(保护性暂停)多个线程之间的通信(消息队列)两个线程之间的通信(保护性暂停)针对两个线程实现信息通信,可以通过中间对象实现。@Slf4jpublic class Test03 { public static void main(String[] args) throws InterruptedException { GuardedObject guardedObject = new GuardedObject();
2020-12-04 16:54:14 114
原创 JAVA并发编程学习笔记03-线程状态
线程状态操作系统层面JAVA层面区别和联系操作系统层面1.初始状态:线程创建但未运行2.可运行状态:处于可以运行的状态,但未获取到时间片,一但系统分配时间片,就会转换为运行状态3.运行状态:处于正在运行的状态4.阻塞状态:调用了阻塞API,如处于IO操作等,系统会自动让其进入阻塞状态,不会进行时间片竞争,直到被唤醒,然后变为可运行状态5.终止状态:程序运行结束JAVA层面定义在Thread类的State枚举中,分为如下6种。1.NEW:线程创建了,但未调用start()方法2.RUN
2020-12-01 14:48:51 89
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人