当前位置: 首页 > news >正文

招聘网官方网站口腔网站设计图

招聘网官方网站,口腔网站设计图,沈阳网站制作平台,上海市工程质量建设管理协会网站目录 1. 信号量Semaphore 2. CountDownLatch 1. 信号量Semaphore 信号量, 用来表示 "可用资源的个数". 本质上就是一个计数器. 1.理解信号量 可以把信号量想象成是停车场的展示牌: 当前有车位 100 个. 表示有 100 个可用资源.当有车开进去的时候, 就相当于申请一个可…

目录

1. 信号量Semaphore

2. CountDownLatch


1. 信号量Semaphore

信号量, 用来表示 "可用资源的个数". 本质上就是一个计数器.

1.理解信号量

可以把信号量想象成是停车场的展示牌: 当前有车位 100 个. 表示有 100 个可用资源.当有车开进去的时候, 就相当于申请一个可用资源, 可用车位就 -1 (这个称为信号量的 P 操作)当有车开出来的时候, 就相当于释放一个可用资源, 可用车位就 +1 (这个称为信号量的 V 操作)如果计数器的值已经为 0 了, 还尝试申请资源, 就会阻塞等待, 直到有其他线程释放资源.

  

Semaphore 的 PV 操作中的加减计数器操作都是原子的, 可以在多线程环境下直接使用.

2. 代码示例 

 

  • 创建 Semaphore 示例, 初始化为 4, 表示有 4 个可用资源.
  • acquire 方法表示申请资源(P操作), release 方法表示释放资源(V操作)
  • 创建 20 个线程, 每个线程都尝试申请资源, sleep 1秒之后, 释放资源. 观察程序的执行效果.
package SemaphoreTest;import java.util.concurrent.Semaphore;public class SemaphoreTest {public static void main(String[] args) {// 1.创建信号量 表示有4个可用资源Semaphore semaphore = new Semaphore(4);// 2.创建一个可以执行的任务Runnable runnable = new Runnable() {@Overridepublic void run() {System.out.println("申请资源");try {semaphore.acquire();System.out.println("我获取到资源了");Thread.sleep(1000);System.out.println("我释放资源了");semaphore.release();} catch (InterruptedException e) {throw new RuntimeException(e);}}};for (int i = 0; i < 20; i++) {Thread thread = new Thread(runnable);thread.start();}}
}

 

2. CountDownLatch

CountDownLatch: 同时等待 N 个任务执行结束.

好像跑步比赛,10个选手依次就位,哨声响才同时出发;所有选手都通过终点,才能公布名次成绩。

  1. 构造 CountDownLatch 实例, 初始化 10 表示有 10 个任务需要完成.
  2. 每个任务执行完毕, 都调用 latch.countDown() . 在 CountDownLatch 内部的计数器同时自减.
  3. 主线程中使用 latch.await(); 阻塞等待所有任务执行完毕. 相当于计数器为 0 了.
import java.util.Map;
import java.util.Random;
import java.util.concurrent.CountDownLatch;public class CountDownLatchTest {public static void main(String[] args) throws InterruptedException {CountDownLatch latch = new CountDownLatch(4);Runnable runnable = new Runnable() {@Overridepublic void run() {try {Thread.sleep((int)(Math.random() * 10000));latch.countDown();} catch (InterruptedException e) {throw new RuntimeException(e);}}};for (int i = 0; i < 4; i++) {Thread thread = new Thread(runnable);thread.start();}latch.await();System.out.println("结束");}
}

 

http://www.yayakq.cn/news/175825/

相关文章:

  • 汝州网站建设汝州沈阳网站建设德泰诺
  • 站牛网是做什么的做的差的网站
  • 北京环评在那个网站上做代写简历哪个平台比较好
  • tp框架做的图片网站同仁微网站建设工作室
  • 网站的开发方式电销公司排名前十
  • 一般用网站服务器新冠咳嗽吃什么药止咳效果好
  • 网站技术实现方案潜江资讯网房屋出租
  • 加强门户网站建设通知站群网站
  • 制作一个景点的网站网站网络结构设计
  • 毕节地区建设网站酒水招商加盟网
  • 印刷下单网站开发wordpress菜单产品目录
  • 个人网站好备案吗设计师接单渠道
  • 山东联迪建设集团网站使用dw做门户网站
  • wordpress 同步微博昆明网站的优化
  • 有没有做培养基的网站wordpress登录的图片不显示
  • 公司做网站费用会计分录个人网站 建设方案书
  • 一个做品牌零食特卖的网站网站标头图片切换
  • 移动端是不是手机端外贸seo建站
  • 聊城网站定制跨境网站开发公司
  • 手机网站推荐一个佛山网站建设的品牌
  • 英文网站建设设计杭州网站怎么制作
  • 常州网站建设技术托管监控公司建设网站推广经营范围
  • 免费seo网站的工具在家做平面设计在哪接单
  • jsp网站开发难点软件开发工程师面试题
  • 许昌网站推广公司winestore wordpress
  • 做兼职比较好的网站网站程序的构成
  • 免费网站建设平台网站的风格有哪些
  • 个人网站能干嘛兰州口碑营销
  • 自己做网站要学前端和后端成全视频免费高清观看在线动漫
  • vps 做网站乐山乐人网站建设公司