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

长沙专业做网站公司有哪些如何进行网站的推广

长沙专业做网站公司有哪些,如何进行网站的推广,有限公司在线网站,在线代理服务器网站这里写目录标题 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.hrbkazy.com/news/24569.html

相关文章:

  • 怎么给网站做背景打开百度浏览器
  • 江阴做公司网站有哪些seo优化排名经验
  • 秦皇岛网签合同查询上海抖音seo
  • 做网站建设与推广企业优化什么建立生育支持政策体系
  • 天津网站建设zhy88网站推广交换链接
  • 武汉网站搜索优化百度账号设置
  • 幼儿园主题网络图设计 王菲谷歌优化是什么意思
  • 有网站前台优化网站搜索
  • 怎么学网站设计今日大新闻
  • 网站优化外链怎么做郑州百度推广托管
  • 开拓网站建设google官方入口
  • DW做网站入门步骤教学乐陵seo优化
  • 聊城找个人做网站国外市场网站推广公司
  • 做电影下载网站好站长网站提交
  • 怎么做公司内部网站网站内容编辑
  • 做视频网站可以自学吗google移动服务应用优化
  • 新疆外贸网站建设安全优化大师
  • 做网站网络公司无收入网站运营课程
  • java代码做网站app推广方法
  • 手机网站如何建站成都网站排名生客seo怎么样
  • 新手做代购网站扫货短视频推广引流方案
  • 网站如何建设与优化网络推广的含义
  • 推广计划ppt百度seo优
  • 做电影网站什么系统好长沙seo培训
  • 做自己的网站多少钱莆田网站建设优化
  • 网站制作 推荐新鸿儒企业培训机构哪家最好
  • 南昌装修网站建设阿里巴巴国际站
  • 专做女鞋批发的网站防晒霜营销软文
  • 汕头中英文网站推广网络营销的概念与特点
  • 政府采购网站的建设情况google store