
并发编程
GrandBlue**
先深度,再广度
展开
-
Java并发工具类的列子与应用场景
并发工具类 一,countDownLatch 应用场景:启动多个线程计算,需要对其结果进行累加等。 /** * 等待所有人都跑步结束后,才能开始下一个项目的比赛 */ import java.util.concurrent.CountDownLatch; public class CountDownLatchDemo { public static void main(String...原创 2019-11-15 17:42:43 · 302 阅读 · 0 评论 -
Java容器
容器——同步容器与并发容器 一,同步容器 vector ,hashtable:JDK提供的同步容器。 (Vector:实现了List接口,Vector实际上就是一个数组,和ArrayList类似,但是Vector中的方法都是synchronized方法,即进行了同步措施。但是在多线程情况下也会有不安全的情况。如下面的列子) hashTable:实现同步是利用synchronized关键字进行锁定的...原创 2019-11-15 17:02:17 · 158 阅读 · 1 评论 -
原子类的了解与使用
原子类 一,什么是原子类 一度认为原子是不可再分割的最小单位,故原子类可以认为其操作都是不可分割。 二,为什么要有原子类 对多线程访问同一个变量,我们需要加锁,而锁是比较消耗性能的,JDK1.5之后,新增的原子操作提供一种用法简单,性能高效,线程安全地更新一个变量的方式。这些类位于atomic包下,发展到JDK1.8,该包下共有17个类,囊括原子更新基本类型,原子更新属性,原子更新引用。 在JDK...原创 2019-11-11 17:42:31 · 1183 阅读 · 0 评论 -
Threadlocal与condition的笔记与引用
一,ThreadLocal的使用 ThreadLocal是一个线程变量,是一个以ThreadLocal对象为键,任意对象为值的存储结构,为每一个线程单独存放一份变量副本,也就是说每一个线程可以根据一个Threadlocal对象查询到绑定在这个线程上的一个值,只要该线程处于活动状态并且Threadlocal实例可以访问,那么每个线程都拥有对其本地线程副本的隐式引用变量。一个线程消失后,它的所有副本线...原创 2019-11-11 16:38:52 · 216 阅读 · 0 评论 -
并发编程stampedLock与ReentrantLock笔记
stampedLock与ReentrantLock的区别 一,简单了解ReentrantLock 1,ReentrantLock是可重入锁,可重入锁可简单的理解为这样 int i = 0; int j = 0; void a (){ aa.lock(); i++; b(); aa.unlock(); } void b(){ bb.lock() j++; bb.unlock(); } ...原创 2019-11-04 14:59:58 · 706 阅读 · 0 评论 -
并发编程笔记
线程间的通讯 wait() ,notify(), notifyAll() 1,何时使用 在多线程环境下,有时候一个线程的执行依赖于另一个线程的某种状态改变,这个时候,我们就可以使用wait(),notify()或notifyAll() 2,wait与sleep的区别 wait会释放持有的锁,二sleep不会,sleep只是让线程在指定的时间内,不去抢占CPU资源 3,注意点 wait,noyi...原创 2019-11-04 12:16:56 · 128 阅读 · 0 评论 -
笔记之Lock与synchronize锁的区别
Lock与synchronize锁的区别 一,lock是通过new对象后手动调用lock()方法进行锁和unlock()方法进行解锁 Lock lock = new ReentrantLock(); public void test(){ lock.lock();//加锁 i++; lock.unlock();//释放锁 } synchronize进行锁的方式是直接修饰在方法上或是代码块,不需要...原创 2019-10-16 15:26:14 · 189 阅读 · 0 评论