java并发回答

java 线程安全比较重要的点:
 
在 java 编程中,记住这些关键点可以帮你避免一些严重的并发问题,比如条件竞争或死锁。
 
1)、不可变对象默认是线程安全的,因为他们一旦被创建就不会被修改。比如 String 是不可变对象,是线程安全的。只读、final 类型的变量也是线程安全的
为什么String是不可变:传参或者其他时候,不会像StringBuilder那样被其他线程改变了他值
https://blog.csdn.net/zhangjg_blog/article/details/18319521
 
2)、本地变量也是线程安全的,因为每个线程都有自己的变量 copy.使用本地变量是一种保证代码线程安全的好方法。(ThreadLocal)
 
3)、使用线程安全的类: Vector, Hashtable, ConcurrentHashMap, String etc.
 
4) 、Volatile 关键字
实现了可见性(读写都要刷新到内存),有序性(先读,后写),没有可见性
AtomicXX使用了cas,比较并交换算法,比较旧值,是原来的就是交换(操作),不是就证明有其他cpu在并发,那就继续尝试
 
5)、锁也是一种线程安全的方式
 
 

posted on 2018-07-23 04:20  Kooing  阅读(123)  评论(0编辑  收藏  举报

导航