Android技术知识Android开发Android开发经验谈

Java高并发(五) - 线程安全策略

2018-07-10  本文已影响27人  随时学丫

Java高并发(一)- 并发编程的几个基本概念
Java高并发(二) - Java 内存模型与线程
Java高并发(三) - CountDownLatch、CyclicBarrier和Semaphore
Java高并发(四) - Java 原子类详解
Java高并发(五) - 线程安全策略
Java高并发(六) - 锁的优化及 JVM 对锁优化所做的努力

一、不可变对象

不可变对象满足的条件

  1. 对象创建后其状态不能修改
  2. 对象所有域都是 final 类型
  3. 对象是正确创建的 (在对象创建期间,this 引用没有逸出

final 关键字

可修饰 类(不能被继承),方法(不能被重写),变量(不能被改变)

常见的 final 类

  1. Java.lang 包
    • 包装类:Boolean,Character,Short,Integer,Long,Float,Double,Byte,Void
    • 字符串类:String,StringBuilder,StringBuffer
    • 系统类:Class,System,RuntimePermission,Compiler
    • 数学类:Math,StrictMath
    • 其他:Character.UnicodeBlock,ProcessBuilder,StackTraceElement
  2. java.util 包
    • UUID,Scanner,Optional
  3. java.lang.reflect 包
    • Array,Constructor,Field,Parameter,ReflectPermission
  4. Java.net 包
    • HttpCookie,Inet4Address,Inet6Address,URL,URI
  5. java.time 包
    • Clock,ZoneId,Year,YearMonth,MonthDay

final 类的好处

  1. final 关键字提高性能,JVM 和 Java 应用都会缓存 final 变量。
  2. final 关键字可以在安丘安的多线程环境下共享,而不需要额外的同步开销。
  3. 使用final 关键字,JVM 会对方法,变量及类进行优化。

二、线程不安全的类

非线程安全的类:StringBuilder,SimpleDateFormat,ArrayList,HashSet,HashMap

线程安全的类:StringBuffer,DateTimeFormatter,CopyOnWriteArrayList

三、并发容器 J.U.C

JDK 提供的这些容器大部分在 java.util.concurrent 包中。

参考:

http://www.importnew.com/7553.html

https://blog.csdn.net/dgeek/article/details/53425192

上一篇 下一篇

猜你喜欢

热点阅读