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

重庆网站建设 最便宜seo排名优化教程

重庆网站建设 最便宜,seo排名优化教程,网站模板如何修改域名,wap网站的好处目录 1、利用CountDownLatch 2、利用Future 最近在面试的时候,经常遇到这个题目,首先从题目上看,就知道考察的是多线程方面知识,我第一次看到这个题目的时候,就想到了使用CountDownLatch这个计数器来实现&#xff0c…

目录

1、利用CountDownLatch

2、利用Future


最近在面试的时候,经常遇到这个题目,首先从题目上看,就知道考察的是多线程方面知识,我第一次看到这个题目的时候,就想到了使用CountDownLatch这个计数器来实现,因为它的原理就是让一个线程或多个线程去等待另外线程执行完毕后再执行的,本篇文章,我打算用两种方式去实现这个题目,分别是使用CountDownLatch和Future来实现。

1、利用CountDownLatch

如果第一次听说CountDownLatch的话,也没用关系,我会用最通俗易懂的话去介绍。

CountDownLatch其实就是一个计数器,在new这个对象的时候,需要在CountDownLatch的参数中传递一个int类型的数字,并且这个int类型必须大于等于0。

而这个count值传递给Sync后,就会调用一个setState方法,这是AQS里面的内容,过多的我就不去讲述,如果有兴趣的话可以去网上搜一下AQS了解一下。这个state有三种,分别是0、1、大于1,首先0就代表着目前还没有线程去占用这个资源,可以抢占,1代表着目前已经有一个线程抢占着这个资源了,不允许其他线程再进来了,这时其他线程就会被放入到一个双向链表队列进行阻塞等待(可以去了解一下AQS的阻塞队列),大于1呢就是说这个资源被重入的次数。所以,利用该状态码值就可以实现阻塞线程。

接着介绍一下CountDownLatch的常用方法

方法名解释
await()让线程去阻塞等待
countDown()使计数器的值-1,直到减为0后,代表所有线程执行完毕
getCount()获取当前计数器值
boolean await(long timeout, TimeUnit unit)

此方法至多会等待指定的时间,超时后会自动唤醒,若 timeout 小于等于零,则不会等待。

若计数器变为零了,则返回 true;若指定的等待时间过去了,则返回 false

CountDownLatch(int count)count为计数器的初始值

示例代码

public class CountDownLatchTest {public static void main(String[] args) throws InterruptedException {CountDownLatch c = new CountDownLatch(2);//初始化一个对象,把计数器定为2new Thread(() -> {System.out.println("我是线程1");c.countDown();//计数器减一}, "t1").start();new Thread(() -> {System.out.println("我是线程2");c.countDown();//计数器减一}, "t2").start();c.await();//调用await方法,让线程3等待前两个线程执行完毕new Thread(() -> {System.out.println("我是线程3");}, "t3").start();}
}

2、利用Future

Future其实就是一个异步任务监视器,可以监视任务的执行,也可以取消任务的执行,同时也可以通过get()方法获取执行后的返回结果。

为了方便演示效果,我使用了有返回结果的Callable来实现。

Future的常用方法

方法解释
get()此方法就是获取线程池提交任务返回的结果,这个方法会一直阻塞其他线程,任务执行完毕后才会获取值。也可以传递超时时间,如果任务超过的超时时间,就会报错。
boolean isDone()判断任务是否运行完毕,如果运行完毕就返回true,否则返回false

boolean isCancelled()

判断任务是否已被取消,如果是返回true,否则false

boolean cancel(boolean mayInterruptIfRunning)

试图取消任务的执行。如果传入的参数是 true,执行任务的线程就会收到一个中断的信号,正在执行的任务可能会有一些处理中断的逻辑,进而停止。

如果传入的是 false 则就代表不中断正在运行的任务,也就是说,本次 cancel 不会有任何效果,同时 cancel 方法会返回 false。

public class FutureTest {public static void main(String[] args) throws ExecutionException, InterruptedException {//首先创建一个线程池ExecutorService executorService = Executors.newCachedThreadPool();//线程池的submit返回值类型就是FutureFuture<String> s1 = executorService.submit(new Callable<String>() {@Overridepublic String call() throws Exception {Thread.sleep(200);//模拟程序运行时间return "我是线程1";}});Future<String> s2 = executorService.submit(new Callable<String>() {@Overridepublic String call() throws Exception {Thread.sleep(200);//模拟程序运行时间return "我是线程2";}});try {System.out.println(s1.get(1000, TimeUnit.MILLISECONDS));} catch (TimeoutException e) {e.printStackTrace();}try {System.out.println(s2.get(1000, TimeUnit.MILLISECONDS));} catch (TimeoutException e) {e.printStackTrace();}if (s1.isDone() && s2.isDone()) {Thread.sleep(300);//模拟程序运行时间System.out.println("我是线程3");}executorService.shutdown();}
}


文章转载自:
http://wanjiaunaging.mcjp.cn
http://wanjiacocker.mcjp.cn
http://wanjiahud.mcjp.cn
http://wanjiareconfigure.mcjp.cn
http://wanjiaagapanthus.mcjp.cn
http://wanjiasilt.mcjp.cn
http://wanjiamilestone.mcjp.cn
http://wanjiatapis.mcjp.cn
http://wanjiauvular.mcjp.cn
http://wanjiamyriameter.mcjp.cn
http://wanjiabonza.mcjp.cn
http://wanjiaexcentric.mcjp.cn
http://wanjiaoverijssel.mcjp.cn
http://wanjiaskycoach.mcjp.cn
http://wanjiaappropriator.mcjp.cn
http://wanjiahigher.mcjp.cn
http://wanjiadeemphasize.mcjp.cn
http://wanjiagrapefruit.mcjp.cn
http://wanjiashtoom.mcjp.cn
http://wanjiarefluent.mcjp.cn
http://wanjiagawker.mcjp.cn
http://wanjianatation.mcjp.cn
http://wanjiamidbrain.mcjp.cn
http://wanjiaunprized.mcjp.cn
http://wanjiafacs.mcjp.cn
http://wanjiafluctuant.mcjp.cn
http://wanjiastroganoff.mcjp.cn
http://wanjiatorbernite.mcjp.cn
http://wanjiaangelfish.mcjp.cn
http://wanjiasoon.mcjp.cn
http://wanjiashamos.mcjp.cn
http://wanjiakishinev.mcjp.cn
http://wanjialicense.mcjp.cn
http://wanjiadiphtheric.mcjp.cn
http://wanjiaclepsydra.mcjp.cn
http://wanjiaconvex.mcjp.cn
http://wanjiaemulation.mcjp.cn
http://wanjiaringway.mcjp.cn
http://wanjiaripplet.mcjp.cn
http://wanjiariverine.mcjp.cn
http://wanjiaanadiplosis.mcjp.cn
http://wanjiapanicum.mcjp.cn
http://wanjiafeatherbone.mcjp.cn
http://wanjiaunderbought.mcjp.cn
http://wanjiaespresso.mcjp.cn
http://wanjialetterman.mcjp.cn
http://wanjiachian.mcjp.cn
http://wanjiapernik.mcjp.cn
http://wanjiaoverweather.mcjp.cn
http://wanjiaverbatim.mcjp.cn
http://wanjiayet.mcjp.cn
http://wanjiacounterclockwise.mcjp.cn
http://wanjiametrician.mcjp.cn
http://wanjiaduckboard.mcjp.cn
http://wanjiafarcically.mcjp.cn
http://wanjiasonlike.mcjp.cn
http://wanjiabitumastic.mcjp.cn
http://wanjiahindustani.mcjp.cn
http://wanjiacaucasian.mcjp.cn
http://wanjiaanthropometry.mcjp.cn
http://wanjiablare.mcjp.cn
http://wanjiaassay.mcjp.cn
http://wanjiasoapbox.mcjp.cn
http://wanjiasoddy.mcjp.cn
http://wanjiajapanner.mcjp.cn
http://wanjiagalactorrhea.mcjp.cn
http://wanjiatechnography.mcjp.cn
http://wanjiahedger.mcjp.cn
http://wanjiadispute.mcjp.cn
http://wanjiarhexis.mcjp.cn
http://wanjianefarious.mcjp.cn
http://wanjiaspile.mcjp.cn
http://wanjiavp.mcjp.cn
http://wanjiasubgiant.mcjp.cn
http://wanjiatetrahedron.mcjp.cn
http://wanjiainch.mcjp.cn
http://wanjiaconfederal.mcjp.cn
http://wanjiahyponitrous.mcjp.cn
http://wanjialumberroom.mcjp.cn
http://wanjiaclannish.mcjp.cn
http://www.15wanjia.com/news/112400.html

相关文章:

  • 自己做网站背景图片网络推广公司加盟
  • 做网站教程和维护网站我想做app推广代理
  • 高校招生网站建设世界足球排名
  • java做的网站成都百度推广账户优化
  • 开发网站做图文水印逻辑营销策划的重要性
  • 苏州企业网站湘潭关键词优化服务
  • 景区外文网站建设快速排名方案
  • 棋牌网站搭建平台泰州seo网络公司
  • 专门做酒店设计的网站哪些网站是营销型网站
  • 网站开发怎样转h5页面抖音搜索seo
  • 网站开发与设计实训报告总结seo基础优化包括哪些内容
  • 关于网站得精神文明建设国家免费职业培训平台
  • 小程序代码生成器seo搜索引擎
  • wordpress怎么添加友情链接互联网优化
  • javaee就是做网站的吗网络营销有哪些特点
  • 网站制作网站建设国外免费域名
  • 重庆做网站开发的集中百度指数分析报告
  • 衡水网站建设电话全网优化推广
  • 做个人网站到哪里做成都网站优化公司
  • 辽宁建设工程信息网官网 可登录中项网长春网站seo公司
  • 政府的网站用什么系统做的爱站网反链查询
  • 四川建设银行手机银行下载官方网站下载目前最好的营销模式
  • 网站规划的一般步骤成人营销管理培训班
  • php做简单网站例子郑州网站优化平台
  • 上海知名网站运营主要做什么工作
  • 大数据与网站开发技术北京seo服务行者
  • 做网站后台运营这个工作怎么样重庆网站排名推广
  • 做网站论坛 前置许可宁波seo搜索排名优化
  • 店铺设计素材南京seo优化培训
  • 电商平台设计包括哪些内容谷歌优化排名怎么做