java并发/多线程编程技术点小结

java并发/多线程编程技术点小结

使用好多线程,可以充分利用cpu并大大提高复杂系统的性能。但是如果没有使用好,是很容易出现安全问题的。

技术点小结:
volatile关键字:volatile关键字只可用来修饰变量(成员变量:实例变量和类变量),不可修饰局部变量。被volatile关键字修饰的成员变量,在多线程环境中,只能保证变量的可见性,不能保证多线程环境中数据操作的原子性(即安全性)。volatile可以防止指令重排序。
synchronized关键字:synchronized可以用来修饰变量、方法、代码块。在并发多线程环境中,被synchronized关键字修饰的变量、方法、代码块,一次只能被一个线程所执行(阻塞,其它线程必须等待)。
组合使用volatile和加锁机制,在多线程环境中,可保证业务代码块或数据操作的原子性(安全性)。
指令重排:在不改变程序前后语义、并且不影响执行结果的前提下,为了提高代码性能,编译器对其做一定的指令重排以提高代码的运算和执行速度。
jdk中常见的相关的多线程api有:
线程相关
java.lang.Thread#Thread(java.lang.Runnable)//基础线程类
java.lang.Runnable//可执行的任务接口
线程池相关
java.util.concurrent.Executors
java.util.concurrent.ExecutorService//接口
java.util.concurrent.Future//接口

java.util.concurrent.locks.ReentrantLock//锁,CAS机制
原子类
java.util.concurrent.atomic.AtomicBoolean
java.util.concurrent.atomic.AtomicInteger
java.util.concurrent.atomic.AtomicIntegerArray
java.util.concurrent.atomic.AtomicIntegerFieldUpdater
java.util.concurrent.atomic.AtomicLong
java.util.concurrent.atomic.AtomicLongArray
java.util.concurrent.atomic.AtomicLongFieldUpdater
java.util.concurrent.atomic.AtomicMarkableReference
java.util.concurrent.atomic.AtomicReference
java.util.concurrent.atomic.AtomicReferenceArray
java.util.concurrent.atomic.AtomicReferenceFieldUpdater
java.util.concurrent.atomic.AtomicStampedReference

2021年 01月 22日 星期五 20:18:40 CST

猜你喜欢

转载自blog.csdn.net/u014132947/article/details/113000783