java 多线程笔记

来自《java并发编程的艺术》
第二章个人总结:
1 volatile 修饰符的使用;

用于修饰变量;
使用建议:在两个或者更多的线程访问的成员变量上使用volatile。当要访问的变量已在synchronized代码块中,或者为常量时,不必使用。 
使用优化:

2 synchronized的实现原理;

无锁状态,偏向锁状态,轻量级锁状态,重量级锁状态
CAS竞争锁机制
偏向锁初始化流程,偏向锁撤销流程
轻量级锁膨胀流程(膨胀为重量级)
锁的优缺点:偏向锁,轻量级锁,重量级锁

3 原子操作的实现原理;

cpu怎样实现原子性操作?
java如何实现原子性操作?
    使用循环CAS实现
CAS实现原子操作的三大问题:ABA问题,循环时间长开销大,只能保证一个共享变量的原子操作

第四章-重点
1.为什么使用多线程

1 更多处理核心
2 更快响应时间        

2.线程优先级

涉及到cpu时间片的概念,时间片分配的越多说明当前线程优先级越高;

3.线程状态与状态之间的转换
4.Daemon线程
5.线程间通信

此处涉及jvm内存相关内容
volatile与synchronized
等待与通知机制
管道输入输出流
ThreadLoacl的使用:
    线程变量,是一个以ThreadLocal对象为键、任意对象为值的存储结构;
    ThreadLocal内部代码分析

6.线程池技术

第五章 java中的锁
1.Lock接口
2.队列同步器

Lock的内部实现
队列同步器基本结构及同步流程
FIFO先进先出队列结构
独占式同步状态与共享式同步状态的获取与释放
基于CAS实现线程安全机制

3.重入锁

可重复进入获取同步状态/锁的排它锁

4.读写锁

可以拆分理解,分解为读锁与写锁;读锁可以理解为共享锁,支持多个读操作的线程同时获取锁;写锁可以理解为排他锁,独占同步状态;当前线程获取到写锁时,其他不论写锁或者读锁线程都无法获取到锁;
获取读锁时如何保证线程安全? 与内部的队列同步器实现有关

5.LockSupport工具
6.condition

第六章 并发编程框架

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值