JAVA基础

线程池

线程池7大参数

  1. corePoolSize:核心线程数,线程空闲时也不会销毁,除非设置允许销毁
  2. maximumPoolSize:最大线程数,最多允许这么多线程允许,在这些线程空闲之后会根据线程存活时间过期而消亡
  3. keepAliveTime:线程存活时间,指超过核心线程数的空闲线程,超过这个时间就会被销毁
  4. unit:线程存活时间单位
  5. workQueue:工作队列。指任务的提交超过最大线程数,那么剩余的任务就会被放入队列
  6. threadFactory:线程工厂,指创建线程的方式
  7. handler:队列满了,拒绝处理方式。包括:抛弃旧任务执行新任务、直接丢弃、直接丢弃并抛出异常、由主线程继续执行

执行过程

	(1)、创建线程池时,初始化核心线程池,等待任务提交直接交给核心线程池处理
	(2)、核心线程池慢,新来的任务放入等待队列,最大线程池启动线程进行处理
	(3)、最大线程池使用完毕,队列也满了,使用决绝策略
	(4)、最大线程池的线程处理完任务之后,经过线程存活时间(注意时间单位)后,进行销毁
	(5)、核心线程池不会销毁,而是继续等任务	

异步执行-CompletableFuture

runAsync

	1、运行任务,无返回结果

supplyAsync

	1、运行任务,有返回结果(泛型接收与返回)

thenAccept

	1、根据返回结果,继续执行代码。最终无返回结果

thenApply

	1、根据返回结果,继续执行代码。最终有返回结果(泛型接收与返回)

thenRun

	1、先前的任务执行完毕,以不要结果的方式执行另外一个任务

handle

	1、根据返回结果,继续执行代码。最终有返回结果(泛型接收与返回),用来处理结果

runAfterBoth

	1、同时运行主任务和入参任务,都完成之后,在进行第三个任务,第三个任务没有前两个任务的值

thenAcceptBothAsync

	1、同时运行主任务和入参任务,都完成之后,在进行第三个任务,第三个任务有前两个任务的值,但没返回值

thenCombineAsync

	1、同时运行主任务和入参任务,都完成之后,在进行第三个任务,第三个任务有前两个任务的值,有返回值

runAfterEitherAsync

	1、同时运行主任务和入参任务,任意一个完成之后,再进行第三个任务,没有入参、没有返回值

acceptEitherAsync

	1、同时运行主任务和入参任务,任意一个完成之后,再进行第三个任务,有入参、没有返回值

applyToEitherAsync

	1、同时运行主任务和入参任务,任意一个完成之后,再进行第三个任务,有入参、有返回值

allOf

	1、等待提交的所有的异步线程执行完毕

anyOf

	1、等待提交的异步线程执行,任意一个执行完毕,则完成

多线程

    /**
     * CountDownLatch(2)   await();  执行等待,当为 0 的时候才执行,只能有一次
     *                     countDown(); 执行 数量减 1
     */
    CountDownLatch countDownLatch = new CountDownLatch(2);
    
    
    /**
     * CyclicBarrier(2)
     * await() 循环执行一个,就减一个,直到为 0 的时候 全部开始执行,之后再次定位为 2
     */
    CyclicBarrier cyclicBarrier = new CyclicBarrier(2);

    /**
     * Semaphore(1)
     * 
     * Semaphore 型号量, acquire() 获得许可,继续向下执行
     *                   release() 释放许可,继续向下执行
     */
    Semaphore semaphor = new Semaphore(1);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值