随笔分类 -  Java并发编程

摘要:线程阀:一种线程与线程之间相互制约和交互的机制。 Queue(队列):用于保存一组元素,存取时,遵循先进先出原则。 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。 进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为 阅读全文
posted @ 2020-07-26 13:30 晕菜一员 阅读(166) 评论(0) 推荐(0) 编辑
摘要:CountDownLatch 是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行. CountDownLatch 是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务 阅读全文
posted @ 2018-07-24 12:00 晕菜一员 阅读(463) 评论(0) 推荐(0) 编辑
摘要:Future任务机制和FutureTask 化繁为简,分而治之,递归的分解和合并,直到任务小到可以接受的程度。 Fork/Join 框架是Java7提供的一个用于并行执行任务的框架。 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 Fork 就是把大任务切分为若干子 阅读全文
posted @ 2017-12-28 17:44 晕菜一员 阅读(1724) 评论(0) 推荐(0) 编辑
摘要:android 线程任务管理器 管理下载任务 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其他更多资源。 在JAVA中更加如此,虚拟机将试图跟踪每一个对象,以便能在对象销毁后进行垃圾回收。 所以提供服务程序效率的一个手段,就是尽可能减少创建和销毁对象的次数。 特别 阅读全文
posted @ 2017-12-27 17:31 晕菜一员 阅读(329) 评论(0) 推荐(0) 编辑
摘要:利用锁的原理,来比较一下四种单例模式。 第一种:线程不安全,不正确 1 class Singleton { 2 3 private static Singleton instance; 4 5 private Singleton() { 6 7 } 8 9 public static Singlet 阅读全文
posted @ 2017-12-27 15:37 晕菜一员 阅读(3615) 评论(0) 推荐(1) 编辑
摘要:atomic 是不会阻塞线程(或者说只是在硬件级别上阻塞了),线程安全的加强版的volatile原子操作。 package路径:java.util.concurrent.atomic下,多了一批原子处理类,主要用于在高并发环境下的高效程序处理。 处理类主要有: 基本类:AtomicInteger 、 阅读全文
posted @ 2017-12-27 15:29 晕菜一员 阅读(1305) 评论(0) 推荐(0) 编辑
摘要:并发程序正确地执行,必须要保证原子性、可见性以及有序性。只要有一个没有被保证,就有可能会导致程序运行不正确。 原子性:一个操作或多个操作要么全部执行完成且执行过程不被中断,要么就不执行。 即操作不可再分(在汇编层面看为一条机器指令),比如a = 1, 和 return a 分别具有原子性, 但 “a 阅读全文
posted @ 2017-12-27 15:07 晕菜一员 阅读(1043) 评论(0) 推荐(0) 编辑
摘要:悲观锁: 假定会发生并发冲突,屏蔽一切可能违反数据完整性的错误。 读取被关锁: 在读取之前一定要判断一下,数据又没有正在被修改。 乐观锁: 假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。 读取乐观锁: 在读取之前就不需要来判断数据的一致性,我只管读我自己的就可以了。 StampedLo 阅读全文
posted @ 2017-12-27 11:25 晕菜一员 阅读(744) 评论(0) 推荐(0) 编辑
摘要:ReadWriteLock 也是一个接口,提供了readLock 和 writeLock 两种锁的操作。 package路径:java.util.locks.ReadWriteLock。 也就是: 一个资源能够被多个读线程访问,或者被一个写线程访问。但不能同时存在读写线程。 读写锁使用的场合: 一个 阅读全文
posted @ 2017-12-26 18:18 晕菜一员 阅读(354) 评论(0) 推荐(0) 编辑
摘要:Lock 是 一个接口,提供了无条件的、可轮询的、定时的、可中断的的锁获取操作,所有加锁和解锁的方法都是显式的。 package路径:java.util.concurrent.locks.Lock。 核心方法:lock() , unlock() , tryLock() 实现类:ReentrantLo 阅读全文
posted @ 2017-12-26 17:50 晕菜一员 阅读(348) 评论(0) 推荐(0) 编辑
摘要:synchronized 是Java语言的关键字,修饰一个方法或者一个代码块。 保证在同一时刻最多只有一个线程执行该段代码。 Synchronized是在JVM层面上实现的,可以通过一些监控工具监控synchronized的锁定,当代码执行时出现异常,JVM会自动释放锁定。当只有少量竞争者的时候,S 阅读全文
posted @ 2017-12-26 17:32 晕菜一员 阅读(458) 评论(0) 推荐(0) 编辑
摘要:目录: 隐式锁,又称线程同步synchronized 显式锁Lock 和 ReentrantLock 显式锁ReadWriteLock 和 ReentrantReadWriteLock 显式锁 StampedLock Java 关键字 volatile 修饰变量 原子操作: atomic JAVA单 阅读全文
posted @ 2017-12-26 15:18 晕菜一员 阅读(205) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示