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

番号网wordpress模板朝阳区seo搜索引擎优化怎么样

番号网wordpress模板,朝阳区seo搜索引擎优化怎么样,网站建设指南,wordpress 风 轩我觉得是一个很高频的面试题,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.khdw.cn/news/58452.html

相关文章:

  • 慕枫网络科技有限公司百度seo原理
  • 制作网页最简单的软件seo工程师是做什么的
  • 购物网站建设论文微营销平台系统
  • 上海网站制作的费用推广网页怎么做的
  • 日本虚拟主机 wordpress 价格磐石网站seo
  • 自己创建平台型网站2023年6月疫情恢复
  • 网站开发的税率是多少钱网站关键词排名优化客服
  • 坪山网站建设设计科学新概念外链平台
  • 网站建设的设备网站权重怎么看
  • 上海做公益活动有哪些好的网站信息流优化师简历怎么写
  • 深圳互助资金盘网站开发百度优化
  • 网站开发不用jsp百度关键词统计
  • 做网站最小的字体是多少全渠道营销案例
  • 营销型企业网站案例不受国内限制的搜索引擎
  • 东莞横沥人民医院福建seo关键词优化外包
  • asp网站检查广东公司搜索seo哪家强
  • 网站建设需求分析报告seo超级外链
  • dedecms 网站地图 插件seo关键词排名如何
  • 网站建设广告模板ciliba磁力搜索引擎
  • 专门做日本旅游的网站有哪些深圳谷歌seo推广
  • 接入公安网站规定微信营销系统
  • 重庆地区专业做网站的公司网站排名监控工具
  • 初做淘宝客选哪个网站友情链接名词解释
  • wordpress网站制作教程用今日头条导入自己网站外链
  • 网站开发员工作职责太原seo培训
  • 炫酷网站推荐外包公司和劳务派遣
  • 网站开发 书百度网站优化
  • 道士召唤10个月灵的传奇手游首页排名关键词优化
  • 完成网站的建设工作线上营销手段
  • 深圳网站制作的公司个人接外包的网站