
并发
文章平均质量分 58
Wl_皮囊
这个作者很懒,什么都没留下…
展开
-
CountDownLatch 和 CyclicBarrier的区别与详解
一.CountDownLatch 和 CyclicBarrier的区别 CountDownLatch 的计数器是大于或等于线程数的,而CyclicBarrier是一定等于线程数 CountDownLatch 放行由其他线程控制而CyclicBarrier是由本身来控制的 二.详解 CountDownLatch 说明: 一个线程等待其他线程执行完之后再执行,相当于加强版的join,在初始化Cou...原创 2020-03-17 15:09:51 · 10332 阅读 · 1 评论 -
并发编程(1)—— 基础概念
一、 并行和并发的区别 并行(parallelism): 是同一时刻,两个线程都在执行。(同一时刻,可以同时处理事情的能力) 并发(concurrency): 是同一时刻,只有一个执行,但是一个时间段内,两个线程都执行了。(与单位时间相关,在单位时间内可以处理事情的能力) 并行: 例:一个食堂有8个窗口,那么在同一时间内可允许8个人同时打饭,那么说明这个食堂的并行度为 8 并发: 例:一个食堂有...原创 2019-06-21 14:13:08 · 228 阅读 · 0 评论 -
并发编程(2)—— 创建线程的方式
上一篇:并发编程(1)—— 基础概念 创建线程的方式 继承Thread类 实现Runnable接口 实现Callable接口,配合FutureTask 一、继承Thread类 public class NewThred { public static void main(String[] args) { Thread testThread = new TestThr...原创 2019-06-21 14:47:43 · 157 阅读 · 0 评论 -
并发编程(3)——interrupt()中断线程
线程既然又开始,那么就有结束,那我们如和来结束一个线程呢? 线程执行结束,自然终止。 线程内抛出未处理异常。 jdk早期有几个方法来结束或暂停线程 stop() :会导致线程不会正确释放资源。 resume() :恢复线程的执行,如果此方法出现在suspend()方法前,那么线程会一直处于挂起状态,并一直占用锁,而造成死锁,而且被挂起的线程状态还是Runnable; suspend() :暂...原创 2019-06-24 15:17:18 · 348 阅读 · 0 评论 -
并发编程(5)—— 常用方法
上一篇:并发编程(4)—— 线程的生命周期 一、线程优先级(1-10 缺省值5) 在不同的操作系统中,设置线程优先级是一个不稳定的,因为有的操作系统会忽略调优先级的设置,使用方式: thread.setPriority(int newPriority); 二、守护线程 守护线程和主线程是共死的,主线程退出,守护线程肯定会退出,守护线程一般做的是支持行工作,例如内存方面的回收,对资源的清理; 测试代...原创 2019-06-28 18:04:06 · 334 阅读 · 1 评论 -
并发编程(6) —— forkjoin
一、概述 forkjion里面的两个重要的概念 分而治之,什么是分而治之? 一个大的事情平均分成几个相同小的事情,如果没有达到最小的要求,就继续分,一直分到达到的要求。 工作密取,workStealing 如果分而治之的线程很多,就会形成线程的队列,这里面就会有完成的快和慢的不同线程。快的线程执行完成以后,就会把慢的队列拿过来进行执行。 二、代码实现 //计算长度为ARRAY_LENGTH 数...原创 2019-07-25 17:10:52 · 266 阅读 · 0 评论 -
synchronize详解
synchronize 关键字synchronize拥有锁重入的功能,也就是在使用synchronize时,当一个线程的得到了一个对象的锁后,再次请求此对象是可以再次得到该对象的锁。 当一个线程请求一个由其他线程持有的锁时,发出请求的线程就会被阻塞,然而,由于内置锁是可重入的,因此如果某个线程试图获得一个已经由她自己持有的锁,那么这个请求就会成功,“重入” 意味着获取锁的 操作的粒度是“线程”,而...原创 2019-08-05 11:40:51 · 3389 阅读 · 0 评论