java并发包concurrent多线程示例

本文介绍了Java并发包中Callable和Future接口的使用,通过call()方法实现带返回值的任务。同时讲解了CountDownLatch如何作为计时器,通过await()和countDown()控制线程同步。还提到了ExecutorService和Executors作为线程池的使用。文中通过一个5个选手赛跑的场景,展示了如何应用这些并发工具,主线程作为裁判,等待所有选手完成任务并收集结果。
摘要由CSDN通过智能技术生成

Callable/Future

CountDownLatch

ExecutorService/Executors

主要是以上几个并发包类的用法、



简单描述下:


Callable/Future   : Callable<T>这个接口类似于Runnble接口,要重写里面的call()方法(类似于run方法)具体区别是,call()可以返回值T,run()不能返回、返回的值通过Future.get()获得。


CountDownLatch :这个是一个计时器,主要方法是 await() 和countDown()  ,  await() 是一个阻塞式的,等countDown()  调用完再执行下面的代码。countDown()要调N次,在构造CountDownLatch 的时候,要指定N次。  可以实现一个  总分总  的线程模型。


ExecutorService/Executors:  这个是线程池的内容,大家记住就行,到时候用的时候再查,线程池总类有些多,要根据具体场景才能选择合适自己的池。


下面实例程序,有些长,大家慢慢看,写程序的要静的下心。

/// 描述下场景。

就是5个选手赛跑,每个选手有个能量值,在初始化选手的时候可以给定,值越高,跑得越快。(最高不高过5,不小过0).

主线程可以看作是裁判,他在起跑线上等待5个选手初始化。每个选手初始化完后,在起跑线上$begin.await(); // //等begin.countDown();这条开始命令

begin.countDown();后,每个选手都开始跑了,然后主线程在等着end.await(); // /主线程在这里等他们跑(阻塞式),跑完之后收集他们的结果,然后评出排名.。

当每个选手跑完后,end.countDown()一下,意思是我跑完了。直到5个人都end.countDown()一下后,主线程就执行end.await()方法下面的代码了。就是开始

收集他们的成绩,然后统计,然后输出。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值