摘要: 同步容器 同步容器可以简单地理解为通过synchronized来实现同步的容器,如果有多个线程调用同步容器的方法,它们将会串行执行。 同步容器将它们的状态封装起来,并对每一个公有方法进行同步。主要包括: Vector Stack HashTable Collections.synchronized方 阅读全文
posted @ 2018-07-05 17:27 开拖拉机的蜡笔小新 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 1.StringBuilder 线程不安全,StringBuffer线程安全原因:StringBuffer几乎所有的方法都加了synchronized关键字 package com.mmall.concurrency.example.commonUnsafe; import com.mmall.co 阅读全文
posted @ 2018-07-05 16:09 开拖拉机的蜡笔小新 阅读(482) 评论(0) 推荐(0) 编辑
摘要: 当我们在多线程程序中操作一个数据时,保证此数据的线程安全是必须的。一般的,我们会将与此数据相关的操作同步化,在处理此数据附近创建临界区,通过类似串行的方式让多线程按序访问保证安全。除了这种同步的方法,还有其他的方法可以保证数据的安全性。 保证数据线程安全的思路基本有以下三种,这三种中又分别有不同的做 阅读全文
posted @ 2018-07-05 15:35 开拖拉机的蜡笔小新 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 不可变类:所谓的不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值。如JDK内部自带的很多不可变类:Interger、Long和String等。 可变类:相对于不可变类,可变类创建实例后可以改变其成员变量值,开发中创建的大部分类都属于可变类。 不可变类的优点: 1.线程安全 不可变对象是 阅读全文
posted @ 2018-07-05 15:30 开拖拉机的蜡笔小新 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 发布对象 发布对象:使一个对象能够被当前范围之外的代码所使用 对象溢出:一种错误的发布,当一个对象还没有构造完成时,就使它被其他线程所见 不正确的发布可变对象导致的两种错误: 1.发布线程意外的所有线程都可以看到被发布对象的过期的值 2.线程看到的被发布对象的引用是最新的,然而被发布对象的状态却是过 阅读全文
posted @ 2018-07-05 11:22 开拖拉机的蜡笔小新 阅读(341) 评论(0) 推荐(0) 编辑