摘要:
工作窃取(work-stealing)算法是指某个线程从其他队列里窃取任务来执行 为什么ForkJoin会存在工作窃取呢?因为我们将任务进行分解成多个子任务的时候。每个子任务的处理时间都不一样。例如分别有子任务A\B。如果子任务A的1ms的时候已经执行,子任务B还在执行。那么如果我们子任务A的线程等 阅读全文
摘要:
危难时心坚志 无人时常自省 阅读全文
摘要:
package com.wf.zhang.juc; import java.util.Random; import java.util.concurrent.*; /** * 三、工具类 : Executors * *** ScheduledExecutorService newScheduledT 阅读全文
摘要:
线程池的体系 (1)Executor,线程池顶级接口; (2)ExecutorService,线程池次级接口,对Executor做了一些扩展,增加一些功能; (3)ScheduledExecutorService,对ExecutorService做了一些扩展,增加一些定时任务相关的功能; (4)Ab 阅读全文
摘要:
使用线程池的目的: * 线程是稀缺资源,不能频繁的创建。 * 解耦作用;线程的创建于执行完全分开,方便维护。 * 应当将其放入一个池子中,可以给其他任务进行复用。 例1 结果 例2 结果 package com.wf.zhang.juc; import java.util.ArrayList; im 阅读全文
摘要:
package com.wf.zhang.juc; /* * 题目:判断打印的 "one" or "two" ? * * 1. 两个普通同步方法,两个线程,标准打印, 打印? //one two * 2. 新增 Thread.sleep() 给 getOne() ,打印? //one two * 3 阅读全文
摘要:
ReadWriteLock同Lock一样也是一个接口,提供了readLock和writeLock两种锁的操作机制,一个是只读的锁,一个是写锁 互斥原则: 读-读能共存, 读-写不能共存, 写-写不能共存。 package com.wf.zhang.juc; import java.util.conc 阅读全文
摘要:
package com.wf.zhang.juc; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Reent 阅读全文
摘要:
在 Condition 对象中,与 wait、notify 和 notifyAll 方法对应的分别是 await、signal 和 signalAll。 Condition 实例实质上被绑定到一个锁上。 要为特定 Lock 实例获得 Condition 实例,请使用其 newCondition() 阅读全文
摘要:
解决多线程安全的方式 synchronized 隐式锁 1.同步代码块 2.同步方法 3.lock 同步锁 显式锁 lock()方法上锁 unlock() 释放锁 package com.wf.zhang.juc; import java.util.concurrent.locks.Lock; im 阅读全文