J.U.C并发工具类

目录

目标

并发工具类:CountDownLatch
Fork/Join的使用
Futrue的使用

CountDownLatch

倒计数器。共享锁。由AQS共享锁实现。
countDown();-》倒计数器减一,并阻塞。
await();当countDown();为0时唤醒所有线程。
使用场景:希望n个线程同时执行某一操作。
基本使用

/*
    没隔1s开启一个线程,共开启6个线程
    若希望6个线程 同时 执行某一操作
    可以用CountDownLatch实现
     */
    public static void test01() throws InterruptedException {
        CountDownLatch ctl = new CountDownLatch(6);

        for (int i=0; i<6; i++){
            new Thread(){
                @Override
                public void run() {
                    ctl.countDown();
                    try {
                        ctl.await();
                        System.out.println("here I am...");
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }.start();
            Thread.sleep(1000L);
        }
    }

Semaphore

信号量,共享锁,限流。由AQS共享锁实现。
传入的参数:同一时间由几个线程可以获取这个共享锁。
抢信号量就是加锁,释放信号量,就是解锁。
在这里插入图片描述

CyclicBarrier

批量操作,可以设置批量大小。条件不满足,会一直阻塞,在满足条件后可以触发事件。
在这里插入图片描述

Runnable和Callable

Runnable执行run方法后没有返回值。Callable可以获取线程执行后的返回值
Callable、FutureTast的使用
1.无法直接传入Thread。
2.通过FutureTast对Callable的封装。
3.将FutureTask传入Thread。
4.通过Future.get();获取线程执行的结果,只有等待线程执行完毕,才能拿到执行结果,没有执行完方法会阻塞线程。
5.FutureTask 只能执行一次,里面会有状态,开始执行或者执行完,其它线程不会再次执行。

fork/join并发处理框架

本质:分而治之
任务拆分,结果汇总。
提供了标准的接口(框架)。
fork();任务拆分。 join(); 获取任务结果。 核心compute()方法。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
适用性
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值