随笔分类 -  JUC

1
摘要:>七大参数 在java中 ThreadPoolExecutor 是线程池类,这也是我们通常所说的线程池 下图是ThreadPoolExecutor构造方法 最后一个是全参数构造 里面有七大参数 corePoolSize 核心线程数量 maximumPoolSize 最大线程数 默认策略是超出会抛出异 阅读全文
posted @ 2019-12-30 16:41 wf.zhang 阅读(765) 评论(0) 推荐(0)
摘要:Future 是一个接口 表示异步计算的结果。它提供了检查计算是否完成的方法 和 等待计算的完成,并获取计算的结果的方法。 Future的主要方法 get(); 等待任务中计算完成 并抛出了异常 获得结果 isDone(); 查询任务是否完成 下面的例子中submit执行了一个Callable类型的 阅读全文
posted @ 2019-12-24 18:50 wf.zhang 阅读(499) 评论(0) 推荐(0)
摘要:在Executor接口中只定义了execute方法,而submit方法则是在ExecutorService接口中定义的。 execute没有返回值,而submit有返回值。 转自: https://www.cnblogs.com/CarpenterLee/p/9558026.html 阅读全文
posted @ 2019-12-23 10:34 wf.zhang 阅读(359) 评论(0) 推荐(0)
摘要:工作窃取(work-stealing)算法是指某个线程从其他队列里窃取任务来执行 为什么ForkJoin会存在工作窃取呢?因为我们将任务进行分解成多个子任务的时候。每个子任务的处理时间都不一样。例如分别有子任务A\B。如果子任务A的1ms的时候已经执行,子任务B还在执行。那么如果我们子任务A的线程等 阅读全文
posted @ 2019-12-22 22:14 wf.zhang 阅读(356) 评论(0) 推荐(0)
摘要:package com.wf.zhang.juc; import java.util.Random; import java.util.concurrent.*; /** * 三、工具类 : Executors * *** ScheduledExecutorService newScheduledT 阅读全文
posted @ 2019-12-22 21:39 wf.zhang 阅读(186) 评论(0) 推荐(0)
摘要:线程池的体系 (1)Executor,线程池顶级接口; (2)ExecutorService,线程池次级接口,对Executor做了一些扩展,增加一些功能; (3)ScheduledExecutorService,对ExecutorService做了一些扩展,增加一些定时任务相关的功能; (4)Ab 阅读全文
posted @ 2019-12-22 20:59 wf.zhang 阅读(168) 评论(0) 推荐(0)
摘要:使用线程池的目的: * 线程是稀缺资源,不能频繁的创建。 * 解耦作用;线程的创建于执行完全分开,方便维护。 * 应当将其放入一个池子中,可以给其他任务进行复用。 例1 结果 例2 结果 package com.wf.zhang.juc; import java.util.ArrayList; im 阅读全文
posted @ 2019-12-22 20:47 wf.zhang 阅读(241) 评论(0) 推荐(0)
摘要:package com.wf.zhang.juc; /* * 题目:判断打印的 "one" or "two" ? * * 1. 两个普通同步方法,两个线程,标准打印, 打印? //one two * 2. 新增 Thread.sleep() 给 getOne() ,打印? //one two * 3 阅读全文
posted @ 2019-12-22 20:04 wf.zhang 阅读(178) 评论(0) 推荐(0)
摘要:ReadWriteLock同Lock一样也是一个接口,提供了readLock和writeLock两种锁的操作机制,一个是只读的锁,一个是写锁 互斥原则: 读-读能共存, 读-写不能共存, 写-写不能共存。 package com.wf.zhang.juc; import java.util.conc 阅读全文
posted @ 2019-12-22 18:44 wf.zhang 阅读(214) 评论(0) 推荐(0)
摘要:package com.wf.zhang.juc; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Reent 阅读全文
posted @ 2019-12-22 18:12 wf.zhang 阅读(226) 评论(0) 推荐(0)
摘要:在 Condition 对象中,与 wait、notify 和 notifyAll 方法对应的分别是 await、signal 和 signalAll。 Condition 实例实质上被绑定到一个锁上。 要为特定 Lock 实例获得 Condition 实例,请使用其 newCondition() 阅读全文
posted @ 2019-12-22 17:55 wf.zhang 阅读(354) 评论(0) 推荐(0)
摘要:解决多线程安全的方式 synchronized 隐式锁 1.同步代码块 2.同步方法 3.lock 同步锁 显式锁 lock()方法上锁 unlock() 释放锁 package com.wf.zhang.juc; import java.util.concurrent.locks.Lock; im 阅读全文
posted @ 2019-12-22 17:11 wf.zhang 阅读(227) 评论(0) 推荐(0)
摘要:创建线程的方式 不能有返回值,且不能声明抛出异常 1. 继承Thread 类 重写Thread类的run()方法 线程不共享资源 2. 实现Runnable接口 重写Runnable接口 run()方法 线程共享资源 有返回值,且可以声明抛出异常 3. 实行Callable接口 重写call()方法 阅读全文
posted @ 2019-12-22 16:46 wf.zhang 阅读(366) 评论(0) 推荐(0)
摘要:CountDownLatch 闭锁 同步辅助类 一组操作中,多个线程完成, 闭锁会允许一个或多个线程一直等待. 即 所有线程都完成才继续执行 主要方法 CountDownLatch.await(); //等待所有线程(倒计时器) 完成 CountDownLatch.countDown(); //倒计 阅读全文
posted @ 2019-12-22 15:47 wf.zhang 阅读(329) 评论(0) 推荐(0)
摘要:package com.wf.zhang.juc; /* * 模拟 CAS 算法 */ public class TestCompareAndSwap { public static void main(String[] args) { final CompareAndSwap cas = new 阅读全文
posted @ 2019-12-22 13:06 wf.zhang 阅读(271) 评论(0) 推荐(0)
摘要:ConcurrentHashMap 锁分段机制 JDK1.8 ConcurrentHashMap使用的是分段锁技术,ConcurrentHashMap 是一个 Segment 数组,Segment 通过继承 ReentrantLock 来进行加锁,所以每次需要加锁的操作锁住的是一个 segment, 阅读全文
posted @ 2019-11-24 17:08 wf.zhang 阅读(212) 评论(0) 推荐(0)
摘要:什么是CopyOnWrite容器 CopyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对CopyOn 阅读全文
posted @ 2019-11-24 17:07 wf.zhang 阅读(229) 评论(0) 推荐(0)
摘要:i++的原子性问题 例子 int i=10; i++; 结果 i=10 分析过程 在计算机 底层 会有生成一个临时变量 temp 将i的值赋值给temp int i=10; > int temp =i; i++; > i=i+1; 最后 > i=temp; 总结 i++ 过程中 读->改->写的操作 阅读全文
posted @ 2019-11-24 12:43 wf.zhang 阅读(226) 评论(0) 推荐(0)
摘要:什么是volatile关键字 volatile是轻量级同步机制,与synchronized相比,他的开销更小一些,同时安全性也有所降低,在一些特定的场景下使用它可以在完成并发目标的基础上有一些性能上的优势. volatile修饰的变量对所有线程的可见性(即不具有互斥性) synchronized具有 阅读全文
posted @ 2019-11-24 11:36 wf.zhang 阅读(200) 评论(0) 推荐(1)
摘要:Java JUC 简介 在 Java 5.0 提供了 java.util.concurrent (简称 JUC )包,在此包中增加了在并发编程中很常用 的实用工具类,用于定义类似于线程的自定义子 系统,包括线程池、异步 IO 和轻量级任务框架。 提供可调的、灵活的线程池。还提供了设计用于 多线程上下 阅读全文
posted @ 2019-11-24 11:34 wf.zhang 阅读(392) 评论(0) 推荐(0)

1