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

广告设计公司业务范围优化方案化学2023版电子版

广告设计公司业务范围,优化方案化学2023版电子版,有多少个网站,微站设计JUC(Java.util.concurrent)是Java 5中引入的一个并发编程库,它包含了许多用于多线程处理的工具类和接口。JUC主要提供了以下特性: 线程池:线程池可以提高线程的使用效率,避免频繁地创建和销毁线程&#xff…

JUC(Java.util.concurrent)是Java 5中引入的一个并发编程库,它包含了许多用于多线程处理的工具类和接口。JUC主要提供了以下特性:

  1. 线程池:线程池可以提高线程的使用效率,避免频繁地创建和销毁线程,从而使得应用程序的性能得到提升。

  2. 并发集合类:JUC提供了一些线程安全的集合类,如ConcurrentHashMap、CopyOnWriteArrayList等,可以在多线程环境下安全地操作集合。

  3. 原子操作类:JUC提供了一些原子操作类,如AtomicInteger、AtomicLong等,可以在多线程环境下安全地操作共享变量。

  4. 同步器:JUC提供了一些同步器,如Semaphore、CountDownLatch、CyclicBarrier等,可以协调多个线程之间的执行。

  5. 并发工具类:JUC还提供了一些并发工具类,如Lock、Condition等,可以代替传统的synchronized关键字,提供更灵活、更高效的线程同步机制。

CountDownLatch和CyclicBarrier都是Java中用于多线程编程的工具类,属于同步器的一种。它们都可以用于控制多个线程的执行顺序。

 代码示例

CountDownLatch 

介绍

CountDownLatch是一个计数器,通过它可以控制线程执行的先后顺序。它的作用是让某个线程等待若干个其他线程执行完后再执行。使用CountDownLatch时需要指定一个计数器的值,当所有计数器都为0时,等待线程才会继续执行。

代码 

public class TestCountDown {private static CountDownLatch cl=new CountDownLatch(4);public static void main(String[] args) {Thread thread1 = new Thread(() -> {try {System.out.println("start1");Thread.sleep(4000);cl.countDown();System.out.println("end1");} catch (InterruptedException e) {throw new RuntimeException(e);}});Thread thread2 = new Thread(() -> {try {System.out.println("start2");Thread.sleep(4000);cl.countDown();System.out.println("end2");} catch (InterruptedException e) {throw new RuntimeException(e);}});Thread thread3 = new Thread(() -> {try {System.out.println("start3");Thread.sleep(4000);cl.countDown();System.out.println("end3");} catch (InterruptedException e) {throw new RuntimeException(e);}});Thread thread4 = new Thread(() -> {try {System.out.println("start4");Thread.sleep(4000);cl.countDown();System.out.println("end4");} catch (InterruptedException e) {throw new RuntimeException(e);}});thread1.start();thread2.start();thread3.start();thread4.start();try {cl.await();} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("ok");}
}

运行结果

 CyclicBarrier

 介绍

CyclicBarrier也可以用于控制线程的顺序执行。它可以协调一组线程在某个屏障处等待并互相等待,直到所有线程都到达该屏障后再一起继续执行。CyclicBarrier可以重复使用,每次调用await()方法时,计数器的值都会减1,当计数器为0时,所有线程都会被释放。

代码 

public class TestCyclicBarrier {// 自定义工作线程private static class Worker extends Thread {private CyclicBarrier cyclicBarrier;public Worker(CyclicBarrier cyclicBarrier) {this.cyclicBarrier = cyclicBarrier;}@Overridepublic void run() {super.run();try {System.out.println(Thread.currentThread().getName() + "开始等待其他线程");cyclicBarrier.await();System.out.println(Thread.currentThread().getName() + "开始执行");// 工作线程开始处理,这里用Thread.sleep()来模拟业务处理Thread.sleep(1000);System.out.println(Thread.currentThread().getName() + "执行完毕");} catch (Exception e) {e.printStackTrace();}}}public static void main(String[] args) {int threadCount = 3;CyclicBarrier cyclicBarrier = new CyclicBarrier(threadCount);for (int i = 0; i < threadCount; i++) {System.out.println("创建工作线程" + i);Worker worker = new Worker(cyclicBarrier);worker.start();}}
}

运行结果

总结 

总结来说,CountDownLatch是控制一个线程等待多个其他线程执行完毕后再执行,而CyclicBarrier是控制多个线程相互等待,直到所有线程都到达某个屏障后再一起继续执行。 

http://www.yayakq.cn/news/962564/

相关文章:

  • 做公司网站多少钱图片制作器手机版
  • 个人网站的订单中国建筑网信息查询
  • 深圳网站建设讯美谁能给我一个网站
  • 厦门网站制作计划公司企业查询信息平台
  • 零食网站建设的策划书大型电商网站开发规划
  • 市面上有什么搭建网站工作室慈溪做无痛同济 amp 网站
  • 网站做一样算不算侵权建设工程招投标网最专业的网站
  • 潍坊寿光网站建设全国住房和城乡建设厅证书查询网
  • 网站设计英语科技公司网站建设策划方案
  • 中国哪些网站做软装制作网页动态效果
  • 海宁网站怎么做seo.net做网站的吗
  • 小型电商网站开发青海服装网站建设公司
  • 做那个网站销售产品比较好外贸网站如何推广出去
  • 网站漏洞扫描服务廊坊seo
  • 大连设计网站的公司wordpress foundation
  • 网站文案优化梧州论坛红豆社区
  • 山东建设官方网站如何自助建站
  • 阿里云建站文章搜索平面设计作品集展示
  • 建网站能上传多少数据南昌企业网站排名优化
  • 建站宝盒建网站wordpress视频适应手机
  • 聊城专业网站建设公司网络规划设计师的发证机构
  • 网站网页设计的公司阿里巴巴网站开发信在哪
  • 河北做网站公司任丘网站建设公司
  • 网站一般用什么软件做的品牌网站建设坚持大蝌蚪
  • 房产网站电商怎么做wordpress 本地 搭建网站
  • 做的网站为什么图片看不了怎么回事平台网站开发价格
  • 宿州市建设局网站重庆市官网首页
  • 中小企业的网站建设八戒影视大全
  • wordpress网站搜不到学校网站 建设措施
  • 未来对网站建设的需求wordpress meta插件