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

成都专业做网站公司哪家好怎么样推广自己的网站

成都专业做网站公司哪家好,怎么样推广自己的网站,flash网站建设,wordpress 3.9 中文我觉得是一个很高频的面试题,ABCD四个线程,A线程要等到BCD线程执行完再执行,怎么做 因为我刚复习完AQS,所以立马想到了CountDownLatch,但是看面试官反应他最想听到的应该是join方法,所以面试后就总结了几种…

我觉得是一个很高频的面试题,ABCD四个线程,A线程要等到BCD线程执行完再执行,怎么做
因为我刚复习完AQS,所以立马想到了CountDownLatch,但是看面试官反应他最想听到的应该是join方法,所以面试后就总结了几种方法。
1、join
2、CountDownLatch
3、核心线程数为1的线程池

1、Join方法

Thread提供了让一个线程等待另一个线程完成的方法——join方法。当在某个程序执行流中调用其他线程的join方法时,调用线程将被阻塞,直到被调用join方法加入的join线程执行完毕

public class ThreadJoinDemo {public static void main(String[] args) throws InterruptedException {Thread B = new Thread(new Runnable() {@Overridepublic void run() {System.out.println("B线程启动");}});Thread C = new Thread(new Runnable() {@Overridepublic void run() {System.out.println("C线程启动");}});Thread D = new Thread(new Runnable() {@Overridepublic void run() {System.out.println("D线程启动");}});Thread A = new Thread(new Runnable() {@Overridepublic void run() {try {B.join();C.join();D.join();} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("A线程启动");}});A.start();D.start();C.start();B.start();}
}

结果:

D线程启动
C线程启动
B线程启动
A线程启动

2、CountDownLatch

CountDownLatch(闭锁)是一个同步协助类,允许一个或者多个线程等待,直到其他线程完成操作集。
CountDownLatch使用给定的数值(count)初始化,await方法会阻塞直到当前的计数值(count)由于countDown方法的调用达到0,count为0后所有等待的线程都会被释放,并且随后对await方法的调用都会立即返回,这个是个一次性的现象(相比CyclicBarrier会重置count)。

public class ThreadCountDownLatchDemo {public static void main(String[] args) {CountDownLatch countDownLatch = new CountDownLatch(3);new Thread(()->{countDownLatch.countDown();System.out.println("线程B启动");}).start();new Thread(()->{countDownLatch.countDown();System.out.println("线程C启动");}).start();new Thread(()->{countDownLatch.countDown();System.out.println("线程D启动");}).start();new Thread(()->{try {countDownLatch.await();} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("线程A启动");}).start();}
}

结果:

线程B启动
线程C启动
线程D启动
线程A启动

CountDownLatch与Thread.join的区别

  • CountDownLatch的作用就是允许一个或多个线程等待其他线程完成操作,看起来有点类似join() 方法,但其提供了比 join() 更加灵活的API。
  • CountDownLatch可以手动控制在n个线程里调用n次countDown()方法使计数器进行减一操作,也可以在一个线程里调用n次执行减一操作。
  • 而 join() 的实现原理是不停检查join线程是否存活,如果 join 线程存活则让当前线程永远等待。所以两者之间相对来说还是 countDownLatch使用起来较为灵活。

3、线程池

JAVA通过Executors提供了四种线程池

单线程化线程池(newSingleThreadExecutor);
可控最大并发数线程池(newFixedThreadPool);
可回收缓存线程池(newCachedThreadPool);
支持定时与周期性任务的线程池(newScheduledThreadPool)。
单线程化线程池(newSingleThreadExecutor):优点,串行执行所有任务。

submit():提交任务。
shutdown():方法用来关闭线程池,拒绝新任务。
使用核心线程数为1的线程池,保证线程的执行顺序按照线程的提交顺序执行。
应用场景:串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。此线程池保证所有任务的执行顺序按照任务的提交顺序执行。

public class ThreadPoolDemo {public static void main(String[] args) {ExecutorService executorService = Executors.newSingleThreadExecutor();
//        ExecutorService executorService1 = Executors.newFixedThreadPool(1);Thread A = new Thread(() -> {System.out.println("启动线程A");});Thread B = new Thread(() -> {System.out.println("启动线程B");});Thread C = new Thread(() -> {System.out.println("启动线程C");});Thread D = new Thread(() -> {System.out.println("启动线程D");});executorService.submit(D);executorService.submit(C);executorService.submit(B);executorService.submit(A);executorService.shutdown();}
}

结果:

启动线程D
启动线程C
启动线程B
启动线程A
http://www.shuangfujiaoyu.com/news/49700.html

相关文章:

  • 做理财网站需要办理icp证吗百度免费安装下载
  • 云南网站建设专家软文营销策划方案
  • flash网站推荐seo推广教程
  • wordpress blogger宁波企业seo服务
  • 莆田网站建设优化关键词排名工具
  • 网站内搜索功能怎么做网站标题算关键词优化吗
  • 遵义城乡和住房建设厅网站赣州seo推广
  • 哪个网站做中高端衣服seo基础视频教程
  • 哪个网站做设计可以挣钱百度推广优化是什么?
  • 网站中的关键词seo设置百度怎样发布作品
  • 用rem做移动网站关于营销的最新的新闻
  • 深圳福永网站建设公司百度推广助手电脑版
  • 保山做网站网站免费搭建平台
  • 北京摇号网站维护北京做网站推广
  • 广州电商网站建设博客推广的方法与技巧
  • 电影网站这么做关键词郑州网络营销推广
  • 童装 技术支持 东莞网站建设搜索引擎优化的缺点包括
  • 福建富通建设有限公司网站网络营销推广专员
  • 帝国 只做网站地图江门关键词优化公司
  • 网站推荐你懂我的意思吧知乎山东seo推广
  • 网站建设兆金手指花总百度怎么发广告
  • 小企业做网站怎么做免费投放广告的平台
  • 做视频直播的网站南京seo排名优化
  • 大型网站故障我想开个网站平台怎么开呢
  • 潜江网站设计公司百度手机app
  • 潍坊设计网站建设精品成品网站入口
  • 注册一个网络公司需要多少钱云seo
  • 如何用自己电脑做网站服务器吗seo 培训教程
  • 房山网站开发百度公司有哪些部门
  • 如何更快的让百度收录网站广告类的网站