摘要: 线程八锁 1、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 2、当一个线程访问一个实例对象的一个synchronized(this)同步代码块时,另 阅读全文
posted @ 2017-08-25 18:10 白日梦想家12138 阅读(230) 评论(0) 推荐(0) 编辑
摘要: /*ReadWriteLock 读写锁*/ private ReadWriteLock lock = new ReentrantReadWriteLock(); lock.readLock().lock(); lock.writeLock().lock(); ReadWriteLock 维护了 /* 阅读全文
posted @ 2017-08-25 17:52 白日梦想家12138 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 1 /* 2 * 生产者消费者 案例 (使用Lock 同步锁 方式,使用Condition完成线程之间的通信) 3 * */ 4 public class TestProductorAndConsumerForLock { 5 public static void main(String[] args) { 6 WareHouse wareHo... 阅读全文
posted @ 2017-08-25 17:43 白日梦想家12138 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 显示锁 Lock 一、用于解决多线程 安全问题的方式: synchronized: 1.同步代码块 2.同步方法 jdk1.5 后:第三种:同步锁Lock (注意:同步(synchronized)是隐式的锁操作,而Lock对象是一个显示锁,需要通过lock() 方法上锁,必须通过unlock()方法 阅读全文
posted @ 2017-08-25 17:34 白日梦想家12138 阅读(224) 评论(0) 推荐(0) 编辑
摘要: Callable 接口 一、Java 5.0 在 java.util.concurrent 提供了 一个新的创建执行线程的方式(之前有继承Thread 和 实现Runnable):Callable 接口 Callable 接口类似于 Runnable ,两者都是为那些其 实例 可能被另外一个线程执行 阅读全文
posted @ 2017-08-25 16:41 白日梦想家12138 阅读(237) 评论(0) 推荐(0) 编辑
摘要: /*CountDownLatch 闭锁*/ CountDownLatch 是一各同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待 闭锁可以延迟线程的进度 直到 其到达终止状态,闭锁可以用来 /*确保某些活动直到其他活动都完成才继续执行*/ : 1.确保 某个计算 在其 阅读全文
posted @ 2017-08-25 16:27 白日梦想家12138 阅读(148) 评论(0) 推荐(0) 编辑
摘要: /*ConcurrentHashMap*/ Java 5.0 在 java.util.concurrent 包中提供了 多种 并发容器来改进同步容器的性能 ConcurrentHashMap 同步容器类 是 Java5 增加的一个线程安全的 哈希表。对于多线程的操作,介于HashMap 与 Hash 阅读全文
posted @ 2017-08-25 11:38 白日梦想家12138 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 前面提到,使用volatile无法保证 变量状态的原子性操作,所谓原子性,就是不可再分 如:i++的原子性问题,i++ 的操作实际上分为三个步骤 "读-改-写" (1)保存i的值(一个临时变量中) (2)递增i (3)返回已保存的值 当在并发的条件下执行 i++, 线程1执行 i++,先从主存中 获 阅读全文
posted @ 2017-08-25 11:36 白日梦想家12138 阅读(308) 评论(0) 推荐(0) 编辑
摘要: Java JUC 简介 在 Java 5.0 提供了 java.util.concurrent (简称JUC )包,在此包中增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括线程池、异步 IO 和轻量级任务框架。提供可调的、灵活的线程池。还提供了设计用于多线程上下文中的 C 阅读全文
posted @ 2017-08-25 10:14 白日梦想家12138 阅读(208) 评论(0) 推荐(0) 编辑