JUC(java.util.conccurrent) : concurrent(并发)是多线程相关的组件
Callable接口
也是一种创建线程的方式,适用于想让某个线程执行逻辑后,返回一个结果
相比之下Runnable不关注结果
改进
以下是Callable的基本使用方法
运行结果:
ReentrantLock
信号量Semaphore
也就是计数器,来描述"可用资源"的个数
结果显示:
下述打印结果可以观察到我们的p操作只执行了4次后就开始阻塞等待!
CountDownLatch
适用于多个线程完成一系列任务时,用来衡量任务的进度是否完成.比如把一系列任务拆分成小的任务,让这些小的任务并发执行,就可以使用CountDownLatch来判定是否都完成了.
**代码示例: **
**结果: **
我们可以清楚的看到,此时代码执行了10次之后返回的
对上述的for循环进行修改
ConcurrentHashMap
改进1
改进2