JUC
征程0421
这个作者很懒,什么都没留下…
展开
-
线程池
为什么要用线程池例子:10年前单核CPU电脑,假的多线程,像马戏团小丑玩多个球,CPU需要来回切换.现在是多核电脑,多个线程各自跑在独立的CPU上,不用切换效率高.线程池的优势线程池做的工作主要是控制运行的线程数量,处理过程中将任务放到队列中,然后在线程创建后启动这些任务,如果线程池超过最大数量,超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行.特点线程复用;控制最...原创 2020-02-18 20:25:03 · 192 阅读 · 0 评论 -
阻塞队列
阻塞队列何为阻塞队列何为阻塞队列?阻塞队列是一个队列,数据结构如下图所示:线程1往队列里面添加元素,线程2从队列里面移除元素当队列为空时,从队列中获取元素的操作将会阻塞当队列是满时,从队列中添加元素的操作将会被阻塞试图从空的队列中获取元素的线程将会被阻塞,直到其他线程往空的队列中添加元素试图向已满的队列中添加新元素的线程将会被阻塞,直到其他线程从队列中移除一个或多个元素或者完全清空,...原创 2020-02-17 17:34:50 · 113 阅读 · 0 评论 -
Semaphore的使用
我们在多线程的使用过程中,可能有多个线程抢占有限个资源的需求,比如多辆车抢占车位的例子构造器Semaphore(int permits)Semaphore原理在信号量上我们定义两种操作:1.acquire(获取):当一个线程调用acquire操作是,它要么通过成功获取信号量(信号量减1),要么一直等待下去,知道有线程释放信号量,或超时2.release(释放):实际上会将信号量的...原创 2020-02-17 15:39:49 · 104 阅读 · 0 评论 -
CyclicBarrier的使用
我们在使用多线程的过程中,我们可能有开启固定个线程后触发另一个线程的启动的需求,比如我们开会需要所有人都到齐了才能进行.构造方法CyclicBarrier(int parties, Runnable barrierAction)CyclicBarrier(int parties)CyclicBarrier原理CyclicBarrier主要有一个方法, 当一个多线程调用await方...原创 2020-02-15 18:02:20 · 99 阅读 · 0 评论 -
CountDownLatch的使用
我们在使用多线程的过程中,可能有需要阻塞主线程让子线程先运行的需求,此时我们需要使用CountDownLatch这个类进行线程运行的控制传统案例 1package com.atguigu.juc.MyLock; 2 3 4public class CountDownLatchDemo { 5 pub...原创 2020-02-15 16:22:49 · 75 阅读 · 0 评论 -
开启多线程的三种方式
继承Thread接口 1package com.atguigu.juc.MyLock; 2 3public class ThreadDemo { 4 public static void main(String[] args) { 5 &n...原创 2020-02-15 16:09:06 · 314 阅读 · 0 评论