文章目录
线程状态
Thread.yield():提出释放CPU时间⽚的请求。不会释放锁,线程依然处于RUNNABLE状态,即调度权让给别⼈,但⽴刻可以回到竞争线程锁的状态。
- Thread.sleep():调⽤后线程处于阻塞状态,注:线程状态处于BLOCKED或WAITING或TIME_WAITING这三种统称为堵塞状态。
线程安全的常用数据结构
- HashMap:ConcurrentHashMap
- ArrayList:CopyOnWriteArrayList
- Set:CopyOnWriteArraySet
关键字
- volatile
volatile只能用于修饰变量,不能用于修饰方法或代码块。
当被volatile修饰的变量被读取的时候,是从主存读取,当被volatile修饰的变量被写入的时候,是写入到主存。
多数用于标记性作用
- volatile解决的问题
内存可见性问题
指令重排问题。
- volatile作用
保证共享变量的可见性。
保证共享变量使用时的有序性。
- 总结
synchronized 修饰方法或代码段。