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

湛江建设工程交易中心网站阿里云万网域名购买

湛江建设工程交易中心网站,阿里云万网域名购买,自己做网站可以挣钱吗,西安高新区网站建设目录 1、利用CountDownLatch 2、利用Future 最近在面试的时候#xff0c;经常遇到这个题目#xff0c;首先从题目上看#xff0c;就知道考察的是多线程方面知识#xff0c;我第一次看到这个题目的时候#xff0c;就想到了使用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返回值类型就是FutureFutureString s1 executorService.submit(new CallableString() {Overridepublic String call() throws Exception {Thread.sleep(200);//模拟程序运行时间return 我是线程1;}});FutureString s2 executorService.submit(new CallableString() {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://www.hkea.cn/news/14260902/

相关文章:

  • qq网站登录入口最新钓鱼网站源码
  • 网站制作介绍营销模式有哪些 新型
  • 用帝国cms做网站天将建设集团有限公司网站
  • 校园时空网站建设分析怎么样做网站赚钱吗
  • 作文大全网站免费网站模板 html
  • 注册网站流程及资料设计素材网站源码
  • 网站内页产品做跳转旅游网站建设系统
  • 外贸企业网站建设方案网站服务器 电信
  • 西安建设规划局网站wordpress 仿36氪
  • 做网站在哪里接活西宁哪家网络公司做网站
  • 住房和城乡建设统计网站十堰微网站建设费用
  • 做地产网站有服务器还需要买网站空间吗
  • 百度举报网站如何用家用电脑做网站
  • 北京企业展示网站建设那个做图网站叫什么
  • 南京外贸网站建设案例手机商城网站免费建站
  • 企业网站价格上海企业所得税优惠政策最新2023
  • WordPress完美建站长沙网站托管哪家好
  • wordpress如何导航网站网站开发用什么后端框架
  • 苏州手机网站开发公司my网站域名
  • 学敏网站建设泗阳做网站设计
  • 网站建设公司好做吗WordPress批量注册
  • 建设自己网站的流程图南京本地网站有哪些
  • 河南省建设工程监理协会网站产品页面设计模板
  • 网站做代理还可以刷水吗信息港怎么发布信息
  • 二手房网站开发文档为什么只有我的电脑看网站后台内容管理是乱码
  • 青岛金桥建设机械有限公司网站wordpress批量导入文章cvs
  • 回老家做PHP网站百度投广告怎么收费
  • 互动型网站模板建立企业网站公司
  • 自己的网站怎么做下载链接梵克雅宝中国官网旗舰店
  • 西部数码上传网站wordpress怎么换图标