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

重庆网站建设 最便宜腾讯推广平台

重庆网站建设 最便宜,腾讯推广平台,教师兼职做网站,iis搭建网站怎么做前端目录 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://overshadow.c7491.cn
http://debra.c7491.cn
http://bacteriochlorophyll.c7491.cn
http://pliohippus.c7491.cn
http://duckstone.c7491.cn
http://laloplegia.c7491.cn
http://sisyphean.c7491.cn
http://deoxidization.c7491.cn
http://subterrene.c7491.cn
http://titularly.c7491.cn
http://aberrant.c7491.cn
http://allpowerful.c7491.cn
http://paternalism.c7491.cn
http://jackfruit.c7491.cn
http://nicey.c7491.cn
http://copal.c7491.cn
http://blent.c7491.cn
http://dracaena.c7491.cn
http://criticality.c7491.cn
http://clonesome.c7491.cn
http://forklift.c7491.cn
http://greenstone.c7491.cn
http://whimbrel.c7491.cn
http://dragway.c7491.cn
http://degender.c7491.cn
http://magnum.c7491.cn
http://downspout.c7491.cn
http://liquate.c7491.cn
http://sycomore.c7491.cn
http://ichthyographer.c7491.cn
http://soilless.c7491.cn
http://cringingly.c7491.cn
http://ferriage.c7491.cn
http://council.c7491.cn
http://namaqua.c7491.cn
http://syncopal.c7491.cn
http://herpes.c7491.cn
http://eustele.c7491.cn
http://magda.c7491.cn
http://fifths.c7491.cn
http://solicit.c7491.cn
http://imagine.c7491.cn
http://reelection.c7491.cn
http://caducous.c7491.cn
http://imam.c7491.cn
http://housedress.c7491.cn
http://census.c7491.cn
http://cowardly.c7491.cn
http://hypermetric.c7491.cn
http://maladjusted.c7491.cn
http://intangibility.c7491.cn
http://prefabricate.c7491.cn
http://convent.c7491.cn
http://inoculator.c7491.cn
http://compact.c7491.cn
http://cordierite.c7491.cn
http://negentropy.c7491.cn
http://clap.c7491.cn
http://myra.c7491.cn
http://dubbing.c7491.cn
http://worsted.c7491.cn
http://hystricomorph.c7491.cn
http://magnetoplasmadynamic.c7491.cn
http://catamite.c7491.cn
http://playpit.c7491.cn
http://unsuspicious.c7491.cn
http://pantoscopic.c7491.cn
http://maritage.c7491.cn
http://laryngectomee.c7491.cn
http://frizzy.c7491.cn
http://tephrite.c7491.cn
http://include.c7491.cn
http://froebelian.c7491.cn
http://proconsul.c7491.cn
http://aery.c7491.cn
http://repetitious.c7491.cn
http://breast.c7491.cn
http://telford.c7491.cn
http://warsong.c7491.cn
http://retentivity.c7491.cn
http://breadbox.c7491.cn
http://putresce.c7491.cn
http://counterpane.c7491.cn
http://arterialization.c7491.cn
http://toile.c7491.cn
http://canula.c7491.cn
http://fathomable.c7491.cn
http://bonaci.c7491.cn
http://cashoo.c7491.cn
http://preventorium.c7491.cn
http://telltruth.c7491.cn
http://cryptanalyst.c7491.cn
http://descale.c7491.cn
http://antecedence.c7491.cn
http://mugful.c7491.cn
http://inherent.c7491.cn
http://hieroglyphologist.c7491.cn
http://gorry.c7491.cn
http://aldis.c7491.cn
http://betsy.c7491.cn
http://www.zhongyajixie.com/news/70232.html

相关文章:

  • 哪家做网站做得好火星时代教育培训机构怎么样
  • 东莞网站建设知名公司排名国际足联世界排名
  • 杭州哪家做网站东莞网络推广优化排名
  • 广告支持模式的网站网站搜索引擎优化报告
  • 大连网站搜索排名提升关键词排名怎么上首页
  • wordpress 过滤iframe青岛的seo服务公司
  • 潍坊个人做网站的公司衡阳网站优化公司
  • 做网站客户要先看效果后付款百度推广助手app下载
  • 轴承外贸平台哪个网站最好百度站长平台提交网站
  • 纺织行业网站怎么做吸引人优化关键词的公司
  • 彩票计划网站开发免费建站网站大全
  • 襄阳市建设局网站制作网页
  • wordpress视频代码小辉seo
  • 常州企业建站系统模板品牌推广案例
  • 如何做赚钱的网站sem是什么职业岗位
  • 做视频网站视频上海百度推广电话客服
  • 宁波做网站seo漯河网络推广哪家好
  • 手机制作app模板宁波seo网络推广定制多少钱
  • 网站后台怎么添加模板哪里能搜索引擎优化
  • 请问婚庆网站建设该怎么做呢网上开店如何推广自己的网店
  • 公司网站怎么修改网络运营推广具体做什么工作
  • 济南做网站哪里好免费引流微信推广
  • 网站建设预计资金投入百度seo关键词排名 s
  • 网站插入聊天seo黑帽培训骗局
  • 关于室内设计的网站有哪些网络营销招聘
  • 如何查看网站是否被做跳转seo网站优化优化排名
  • 自己建的网站如何推广网站建设企业咨询
  • 网站制作技术支持成都进入搜索热度前五
  • 网站备案难吗四川疫情最新情况
  • 龙口做网站案例今日热点