![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java多线程
阿梨喜欢吃榴莲
这个作者很懒,什么都没留下…
展开
-
Java多线程之安全发布对象
一、发布对象与对象逸出发布对象:使一个对象能够被当前范围外的代码使用。对象逸出:一种错误的发布,当对象没有构造完成时,就使它被其他线程所见。(1)不安全地发布对象@Slf4jpublic class UnsafePublish { private String[] states = {"a", "b", "c"}; public String[] getStates() {...原创 2018-05-12 17:25:25 · 1068 阅读 · 0 评论 -
Java多线程之线程安全策略---不可变对象
一、不可变对象要满足以下几个条件:(1)对象创建以后状态不能修改;(2)对象所有域都时final类型;(3)对象是正确创建的(this引用没有逸出)我们来介绍一下final,Collectons.unmodifiableXXX,Guava的ImmutableXXX二、final(1)修饰类:不能被继承(2)修饰方法:锁定方法不被继承类修改(3)修饰变量:基本类型变量,引用类型变量一个类的priva...原创 2018-05-12 19:50:09 · 637 阅读 · 0 评论 -
Java多线程之线程安全策略---线程不安全类与写法
一、如果一个类的对象同时可以被多个线程访问,如果不做特殊的同步和并发处理,就会容易表现出线程不安全的对象。接下来,我们来看三组容易类和一种写法,它们经常在编程中遇到。二、StringBuilder和StringBufferJava里面字符串拼接提供了两个类:StringBuilder和StringBuffer(1)看它们在多线程的表现:StringBuilder:@Slf4jpublic cla...原创 2018-05-12 20:43:55 · 213 阅读 · 0 评论 -
Java多线程之线程安全策略---同步容器
同步容器只是线程安全性更好一些,在代码运行逻辑中并不一定是线程安全的。也就是同步容器本身是线程安全的,但是主要还是注意你的代码逻辑。一、非线程安全的集合对应的同步容器Vector实现了List接口,Vector里面的方法都是用sync修饰过的。Stack也是同步容器,也是使用sync实现同步,继承Vector,里面存储的数据是先进后出。HashTable实现了Map接口,里面方法用sync修饰。二...原创 2018-05-12 21:18:48 · 210 阅读 · 0 评论 -
Java多线程之线程安全策略---并发容器
一、并发容器JUC(java.util.concurrent)并发容器里面提供的线程安全的集合和map。ArrayList--->CopyOnWriteArrayListHashSet--->CopyOnWriteArraySetTreeSet--->ConcurrentSkipListSetHashMap--->ConcurrentHashMapTreeMap--->...原创 2018-05-12 21:57:39 · 1062 阅读 · 1 评论