
JUC
文章平均质量分 54
景川呀
写博客主要是为了记录自己的学习过程并加深印象
展开
-
J.U.C之AQS-ReentrantLock
简单说一下 ReentrantLock简介: ReentrantLock 是一个可重入的互斥锁定 Lock,它具有与使用 synchronized 方法和语句所访问的隐式监视器锁定相同的一些基本行为和语义,但功能更强大。ReentrantLock 将由最近成功获得锁定,并且还没有释放该锁定的线程所拥有。当锁定没有被另一个线程所拥有时,调用 lock 的线程将成功获取该锁定并返回。如果当前线程...原创 2018-09-11 17:19:26 · 295 阅读 · 0 评论 -
J.U.C之AQS-ReentrantReadWriteLock
简单说一下ReentrantReadWriteLock简介 ReentrantReadWriteLock是一个读写锁,所谓读写锁,是对访问资源共享锁和排斥锁,一般的重入性语义为:如果对资源加了写锁,其他线程无法再获得写锁与读锁,但是持有写锁的线程,可以对资源加读锁(锁降级);如果一个线程对资源加了读锁,其他线程可以继续加读锁。 所以ReentrantReadWriteLock的写入锁只能有...原创 2018-09-11 17:48:12 · 307 阅读 · 0 评论 -
J.U.C之FutureTask
本篇记录一下FutureTask的个人理解FutureTask可用于异步获取执行结果或取消执行任务的场景。通过传入Runnable或者Callable的任务给FutureTask,直接调用其run方法或者放入线程池执行,之后可以在外部通过FutureTask的get方法异步获取执行结果,因此,FutureTask非常适合用于耗时的计算,主线程可以在完成自己的任务后,再去获取结果。另外,Futu...原创 2018-09-06 18:00:21 · 343 阅读 · 0 评论 -
J.U.C之AQS-CountDownLatch
本篇说一下CountDownLatch的简单使用CountDownLatch简介 CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减...原创 2018-09-07 15:00:17 · 447 阅读 · 0 评论 -
J.U.C之AQS-Semaphore
简单说一下Semaphore的使用Semaphore又称信号量,是操作系统中的一个概念,在Java并发编程中,信号量控制的是线程并发的数量。Semaphore是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。很多年以来,我都觉得从字面上很难理解Semaphore所表达的含义,只能把它比作是控制流量的红绿灯,比如XX马路要限制流量,只允许同时有一百辆车在这条路上...原创 2018-09-07 16:23:30 · 275 阅读 · 0 评论 -
J.U.C之AQS-CyclicBarrier
简单记录一下CyclicBarrier的使用简介 CyclicBarrier是一个同步辅助类,它允许一组线程相互等待直到所有线程都到达一个公共的屏障点。在程序中有固定数量的线程,这些线程有时候必须等待彼此,这种情况下,使用CyclicBarrier很有帮助。这个屏障之所以用循环修饰,是因为在所有的线程释放彼此之后,这个屏障是可以重新使用的。CyclicBarrier 的字面意思是...原创 2018-09-07 18:00:51 · 278 阅读 · 0 评论 -
J.U.C之ForkJoin
**本章简说一下ForkJoin**ForkJoin是Java7提供的原生多线程并行处理框架,其基本思想是将大人物分割成小任务,最后将小任务聚合起来得到结果。Fork/Join采用“工作窃取模式”,当执行新的任务时他可以将其拆分成更小的任务执行,并将小任务加到线程队列中,然后再从一个随即线程中偷一个并把它加入自己的队列中Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这...原创 2018-10-08 10:54:06 · 326 阅读 · 0 评论