
并发编程
文章平均质量分 58
Wl_皮囊
这个作者很懒,什么都没留下…
展开
-
CountDownLatch 和 CyclicBarrier的区别与详解
一.CountDownLatch 和 CyclicBarrier的区别CountDownLatch 的计数器是大于或等于线程数的,而CyclicBarrier是一定等于线程数CountDownLatch 放行由其他线程控制而CyclicBarrier是由本身来控制的二.详解CountDownLatch说明: 一个线程等待其他线程执行完之后再执行,相当于加强版的join,在初始化Cou...原创 2020-03-17 15:09:51 · 10330 阅读 · 1 评论 -
并发编程(1)—— 基础概念
一、 并行和并发的区别并行(parallelism): 是同一时刻,两个线程都在执行。(同一时刻,可以同时处理事情的能力)并发(concurrency): 是同一时刻,只有一个执行,但是一个时间段内,两个线程都执行了。(与单位时间相关,在单位时间内可以处理事情的能力)并行:例:一个食堂有8个窗口,那么在同一时间内可允许8个人同时打饭,那么说明这个食堂的并行度为 8并发:例:一个食堂有...原创 2019-06-21 14:13:08 · 226 阅读 · 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 评论 -
并发编程(4)—— 线程的生命周期
我们都知道线程是操作系统能够进行运算调度的最下单位,在Java中的线程其实就是对操作系统的的线程进行的封装。今天我们就来说说线程的生命周期,也就是线程的生老病死。java线程的生命周期分五个周期(也有人说六种waiting状态)New 创建线程(初始化状态)。Runnable(就绪/可运行状态)。Running(运行中)Blocked(阻塞状态)。Death(死亡状态/终止状态)...原创 2019-06-27 16:42:13 · 260 阅读 · 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 评论