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

长沙专业做网站公司有哪些西安市seo排名按天优化

长沙专业做网站公司有哪些,西安市seo排名按天优化,网站如何做词,网站建设教程 迅雷下载这里写目录标题 1、ReentrantLock2、Semaphore3、CountDownLatch4、CyclicBarrier 1、ReentrantLock ReentrantLock 是属于独占模式, 即同一时刻只允许一个线程获取锁。 2、Semaphore Semaphore 属于共享模式,synchronized 和 ReentrantLock 都是一次只…

这里写目录标题

  • 1、ReentrantLock
  • 2、Semaphore
  • 3、CountDownLatch
  • 4、CyclicBarrier

1、ReentrantLock

ReentrantLock 是属于独占模式, 即同一时刻只允许一个线程获取锁。

2、Semaphore

Semaphore 属于共享模式,synchronized 和 ReentrantLock 都是一次只允许一个线程访问某个资源,而Semaphore(信号量)可以用来控制同时访问特定资源的线程数量。

在这里插入图片描述

Semaphore 通常用于那些资源有明确访问数量限制的场景比如限流(仅限于单机模式,实际项目中推荐使用 Redis +Lua 来做限流

Semaphore 的原理:
在这里插入图片描述

3、CountDownLatch

CountDownLatch 允许 count 个线程阻塞在一个地方,直至所有线程的任务都执行完毕。CountDownLatch 是一次性的,计数器的值只能在构造方法中初始化一次,之后没有任何机制再次对其设置值,当 CountDownLatch 使用完毕后,它不能再次被使用。

原理:
CountDownLatch 是共享锁的一种实现,它默认构造 AQS 的 state 值为 count。当线程使用 countDown() 方法时,其实使用了tryReleaseShared方法以 CAS 的操作来减少 state,直至 state 为 0 。当调用 await() 方法的时候,如果 state 不为 0,那就证明任务还没有执行完毕,await() 方法就会一直阻塞,也就是说 await() 方法之后的语句不会被执行。直到count 个线程调用了countDown()使 state 值被减为 0,或者调用await()的线程被中断,该线程才会从阻塞中被唤醒,await() 方法之后的语句得到执行

应用场景:
读取处理 6 个文件,这 6 个任务都是没有执行顺序依赖的任务,但是我们需要返回给用户的时候将这几个文件的处理的结果进行统计整理。

为此我们定义了一个线程池和 count 为 6 的CountDownLatch对象 。使用线程池处理读取任务,每一个线程处理完之后就将 count-1,调用CountDownLatch对象的 await()方法,直到所有文件读取完之后,才会接着执行后面的逻辑。

public class CountDownLatchExample1 {// 处理文件的数量private static final int threadCount = 6;public static void main(String[] args) throws InterruptedException {// 创建一个具有固定线程数量的线程池对象(推荐使用构造方法创建)ExecutorService threadPool = Executors.newFixedThreadPool(10);final CountDownLatch countDownLatch = new CountDownLatch(threadCount);for (int i = 0; i < threadCount; i++) {final int threadnum = i;threadPool.execute(() -> {try {//处理文件的业务操作//......} catch (InterruptedException e) {e.printStackTrace();} finally {//表示一个文件已经被完成countDownLatch.countDown();}});}countDownLatch.await();threadPool.shutdown();System.out.println("finish");}
}

在这里插入图片描述

4、CyclicBarrier

CyclicBarrier 和 CountDownLatch 非常类似,它也可以实现线程间的技术等待,但是它的功能比 CountDownLatch 更加复杂和强大。主要应用场景和 CountDownLatch 类似。

CountDownLatch 的实现是基于 AQS 的,而 CycliBarrier 是基于 ReentrantLock(ReentrantLock 也属于 AQS 同步器)和 Condition 的。

原理:
让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。

在这里插入图片描述

http://www.dinnco.com/news/41176.html

相关文章:

  • 杭州萧山网站建设品牌营销策划公司
  • 外贸soho 怎么做网站即时热榜
  • 案例学 网页设计与网站建设互联网线上推广
  • 网站除了做流量还需要什么软件云推广
  • php中做购物网站的教程网站排名英文
  • 做网站平台的营业执照神马搜索推广
  • 网站建设项目晚上看b站
  • 商城网站模板框架搜索引擎优化工作
  • 做网站asp农村电商平台
  • 东莞虎门大桥宁波seo整站优化
  • c 教程如何做网站seo英文全称
  • 石家庄正规网站建设公司企业seo培训
  • 网站站群建设搜索百度app下载
  • 建网站找哪家微信软文怎么写
  • 从化营销网站建设目前疫情最新情况
  • 网站制作如何荆门刚刚发布的
  • 怎样看网站是谁做的网络营销运营推广
  • 清远做网站seo排名的职位
  • 成都网站设计建设广州网站外包
  • 门户网站和网站的区别企查查在线查询
  • 网站建设免费建站免费源代码百度官网链接
  • 四川住房和城乡建设厅网站题库热点时事新闻
  • 行业门户网站如何做seo技术顾问
  • 一个专门做ppt的网站吗线上职业技能培训平台
  • 有没有找项目的网站推广链接让别人点击
  • java web网站开发流程网站的推广方式有哪些
  • 做网站一定要公司备案吗推销产品的软文500字
  • 群晖ds1817做网站新闻最近的大事10件
  • 摄影网站策划书找片子有什么好的关键词推荐
  • app开发企业网站建设系统优化助手