同步器的代码示例

同步器的代码示例

本文提供四个Java并发同步器的代码示例及使用方法,帮助您理解Java多线程编程中的同步机制。

1. CountDownLatch:一次性屏障,协调线程

CountDownLatch允许一个或多个线程等待,直到其他线程完成一组操作。

import java.util.concurrent.CountDownLatch;public class CountDownLatchExample {    public static void main(String[] args) throws InterruptedException {        int workerCount = 3;        CountDownLatch latch = new CountDownLatch(workerCount);        for (int i = 0; i  {                try {                    // 模拟工作                    Thread.sleep(1000);                    System.out.println("Worker " + Thread.currentThread().getName() + " finished.");                } catch (InterruptedException e) {                    e.printStackTrace();                } finally {                    latch.countDown(); // 完成任务后计数器减一                }            }).start();        }        System.out.println("Main thread waiting for workers to finish...");        latch.await(); // 主线程等待所有计数器变为0        System.out.println("All workers finished. Main thread proceeding.");    }}

2. Semaphore:控制对共享资源的访问

Semaphore管理一组许可证,控制对有限资源的访问。

import java.util.concurrent.Semaphore;public class SemaphoreExample {    public static void main(String[] args) {        int permits = 2; // 可用许可证数量        Semaphore semaphore = new Semaphore(permits);        for (int i = 1; i  {                try {                    semaphore.acquire(); // 获取许可证                    System.out.println("Thread " + Thread.currentThread().getName() + " acquired permit.");                    // 使用共享资源                    Thread.sleep(1000);                    System.out.println("Thread " + Thread.currentThread().getName() + " releasing permit.");                } catch (InterruptedException e) {                    e.printStackTrace();                } finally {                    semaphore.release(); // 释放许可证                }            }).start();        }    }}

3. CyclicBarrier:可重用的屏障点同步

代码小浣熊 代码小浣熊

代码小浣熊是基于商汤大语言模型的软件智能研发助手,覆盖软件需求分析、架构设计、代码编写、软件测试等环节

代码小浣熊 51 查看详情 代码小浣熊

CyclicBarrier在公共点(屏障)同步多个线程,所有线程到达屏障点后可重复使用。

import java.util.concurrent.CyclicBarrier;public class CyclicBarrierExample {    public static void main(String[] args) {        int threadCount = 3;        CyclicBarrier barrier = new CyclicBarrier(threadCount, () -> {            System.out.println("All threads have reached the barrier. Proceeding...");        });        for (int i = 0; i  {                try {                    // 模拟工作                    Thread.sleep(1000);                    System.out.println("Thread " + Thread.currentThread().getName() + " reached the barrier.");                    barrier.await(); // 等待其他线程到达屏障                    System.out.println("Thread " + Thread.currentThread().getName() + " passed the barrier.");                } catch (Exception e) {                    e.printStackTrace();                }            }).start();        }    }}

4. Phaser:高级动态线程同步

Phaser类似于CyclicBarrier,但支持动态加入和离开线程。

import java.util.concurrent.Phaser;public class PhaserExample {    public static void main(String[] args) {        Phaser phaser = new Phaser(1); // 注册“主方”        for (int i = 0; i  {                System.out.println("Thread " + Thread.currentThread().getName() + " registered.");                phaser.register(); // 注册线程                try {                    Thread.sleep(1000);                    System.out.println("Thread " + Thread.currentThread().getName() + " arrived at phase " + phaser.getPhase());                    phaser.arriveAndAwaitAdvance(); // 到达并等待其他线程                    System.out.println("Thread " + Thread.currentThread().getName() + " passed phase " + phaser.getPhase());                } catch (InterruptedException e) {                    e.printStackTrace();                } finally {                    phaser.arriveAndDeregister(); // 完成并注销                }            }).start();        }        phaser.arriveAndAwaitAdvance(); // 主线程等待所有线程完成第一阶段        System.out.println("All threads finished.");    }}

这些示例演示了每个同步器的基本用法。您可以修改线程数量和等待时间来观察同步行为的变化。 记住处理潜在的InterruptedException。

以上就是同步器的代码示例的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/285649.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
excel表格怎么做统计图_Excel统计图表制作与自定义
上一篇 2026年10月19日 11:48:27
ASP.NET Core中的配置系统是什么?如何读取配置?
下一篇 2025年12月17日 16:14:46

相关推荐

  • 广达1月营收1425亿元新台币写同期新猷 评估美加征关税:影响不大

    广达1月营收1425亿元新台币写同期新猷 评估美加征关税:影响不大广达1月营收1425亿元新台币写同期新猷 评估美加征关税:影响不大广达1月营收1425亿元新台币写同期新猷 评估美加征关税:影响不大广达1月营收1425亿元新台币写同期新猷 评估美加征关税:影响不大

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 广达电脑公布1月合并营收达1,425.6亿元新台币,较去年同期增长95.5%,创下历史新高,并连续九个月营收突破千亿元大关。 这一亮眼成绩主要归功于蓬勃发展的人工智能(AI)服务器市场需求。 尽…

    2026年10月19日 • 用户投稿
    100
  • 从淘宝闪购到天猫优品 阿里为什么赞助苏超近一半球队

    从淘宝闪购到天猫优品  阿里为什么赞助苏超近一半球队从淘宝闪购到天猫优品  阿里为什么赞助苏超近一半球队从淘宝闪购到天猫优品  阿里为什么赞助苏超近一半球队从淘宝闪购到天猫优品  阿里为什么赞助苏超近一半球队

    7月5日,天猫优品正式宣布赞助苏超联赛连云港队,并冠名为“齐天大圣队”。在品牌官宣的创意口号中,“齐天大圣”被拆解为品牌宣言:“齐”是家电家居品类齐,“天”是天猫优品猫天天,“大”是国家补贴优惠大,“圣”是苏g连云港大胜。 这已是阿里系拿下的第六支苏超赞助球队。此前,淘宝闪购拿下常州队、支付宝绑定徐…

    2026年10月19日 • 用户投稿
    200
  • Java中接口和抽象类有什么区别?

    Java中接口和抽象类有什么区别?Java中接口和抽象类有什么区别?Java中接口和抽象类有什么区别?Java中接口和抽象类有什么区别?

    核心差异:接口: 定义方法规范,实现类必须实现所有方法。抽象类: 提供部分方法实现,可提供共同属性,支持多态。应用场景:接口: 需要定义一种规范,支持多实现。抽象类: 需要提供部分实现,不支持多继承。最佳实践:避免过度使用接口或抽象类。权衡利弊,选择最合适的实现方案。注重代码简洁和易理解性,保障代码…

    2026年10月19日 • 用户投稿
    100
  • 日月光董事长张虔生长子张能杰骤逝,享年46岁

    日月光董事长张虔生长子张能杰骤逝,享年46岁日月光董事长张虔生长子张能杰骤逝,享年46岁日月光董事长张虔生长子张能杰骤逝,享年46岁日月光董事长张虔生长子张能杰骤逝,享年46岁

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 日月光投控董事张能杰不幸逝世,享年46岁,引发业界震动。张能杰是董事长张虔生之子,此消息也令外界高度关注日月光投控的未来接班人安排。 公开资料显示,张能杰毕业于美国卫斯理大学心理学专业,自200…

    2026年10月19日 • 用户投稿
    100
  • Java中怎么查看一个类的字节码?

    Java中怎么查看一个类的字节码?Java中怎么查看一个类的字节码?Java中怎么查看一个类的字节码?Java中怎么查看一个类的字节码?

    Java字节码是平台无关的指令集,可通过JDK中的javap工具反汇编为汇编代码。通过分析字节码结构,可了解JVM执行机制、代码优化和逆向工程。javap可反汇编代码并显示常量池、字段和方法签名等信息。更高级的字节码分析工具可用于可视化代码执行流程,辅助深入分析和性能优化。不断实践和深入思考,将有助…

    2026年10月19日 • 用户投稿
    100
  • 168.5.1路由器恢复出厂 192.168.5.1系统日志查看(IPv6模式)

    168.5.1路由器恢复出厂 192.168.5.1系统日志查看(IPv6模式)168.5.1路由器恢复出厂 192.168.5.1系统日志查看(IPv6模式)168.5.1路由器恢复出厂 192.168.5.1系统日志查看(IPv6模式)168.5.1路由器恢复出厂 192.168.5.1系统日志查看(IPv6模式)

    路由器恢复出厂设置会清除所有自定义配置,包括wi-fi名称密码、管理密码、网络连接设置、端口转发规则、dhcp设置、ipv6配置及安全策略,使其恢复到初始状态。2. 查看192.168.5.1系统日志可排查网络故障,需登录管理界面,在系统工具或状态菜单中查找日志,重点关注错误和警告级别信息,结合时间…

    2026年10月19日 • 用户投稿
    100
  • 华为与深蓝深化合作 乾崑智驾加速全民智驾普及

    华为与深蓝深化合作 乾崑智驾加速全民智驾普及华为与深蓝深化合作 乾崑智驾加速全民智驾普及华为与深蓝深化合作 乾崑智驾加速全民智驾普及华为与深蓝深化合作 乾崑智驾加速全民智驾普及

    华为深蓝携手,加速全民智驾普及!2月9日,华为与深蓝汽车在重庆签署全面合作协议,深蓝汽车将大规模搭载华为乾坤智驾等解决方案,共同推动智能网联汽车发展,加速全民智驾普及。深蓝汽车预计2024年第四季度月交付量将超过3万辆,未来销量潜力巨大。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无…

    2026年10月19日 • 用户投稿
    100
  • 《深海迷航2》延期至2026年发售 不想让员工得奖金?

    《深海迷航2》延期至2026年发售  不想让员工得奖金?《深海迷航2》延期至2026年发售  不想让员工得奖金?《深海迷航2》延期至2026年发售  不想让员工得奖金?《深海迷航2》延期至2026年发售  不想让员工得奖金?

    krafton此前对其旗下工作室unknown worlds进行了管理层调整,包括解雇了联合创始人charlie cleveland和max mcguire,以及ceo ted gill。现在官方正式宣布,《深海迷航2》将推迟至2026年发布。 据彭博社记者Jason Schreier透露,Kraf…

    2026年10月19日 • 用户投稿
    100
  • 战略整合成汽车央企重要发展方向:东风汽车与长安汽车均筹划重组

    战略整合成汽车央企重要发展方向:东风汽车与长安汽车均筹划重组战略整合成汽车央企重要发展方向:东风汽车与长安汽车均筹划重组战略整合成汽车央企重要发展方向:东风汽车与长安汽车均筹划重组战略整合成汽车央企重要发展方向:东风汽车与长安汽车均筹划重组

    两大汽车央企——东风汽车和长安汽车,于2月9日晚间发布公告,宣布其控股股东正筹划与其他国资央企集团进行重组。东风汽车集团有限公司表示,重组可能导致公司间接控股股东变更,但实际控制人不会改变。长安汽车的间接控股股东中国兵器装备集团有限公司也发布了类似公告。 公告称,此次重组预计不会对公司日常运营产生重…

    2026年10月19日 • 用户投稿
    200
  • ECharts饼图点击事件如何获取具体数据?

    echarts饼图通过getzr().on(‘click’)获取具体数据 在echarts饼图中,通过getzr().on(‘click’)方法可以获取点击事件,但只能获得target是piepiece的对象,无法直接获取具体数据。 对于contain…

    2026年10月19日
    100
  • VSCode如何通过扩展实现物联网开发 VSCode IoT设备模拟器的集成方法

    VSCode如何通过扩展实现物联网开发 VSCode IoT设备模拟器的集成方法VSCode如何通过扩展实现物联网开发 VSCode IoT设备模拟器的集成方法VSCode如何通过扩展实现物联网开发 VSCode IoT设备模拟器的集成方法VSCode如何通过扩展实现物联网开发 VSCode IoT设备模拟器的集成方法

    #%#$#%@%@%$#%$#%#%#$%@_e2fc++805085e25c9761616c00e065bfe8物联网开发常用的核心扩展包括:platformio ide用于嵌入式代码编写与烧录,azure iot tools或aws iot toolkit用于设备模拟与云端交互,c/c++扩展提…

    2026年10月19日 • 用户投稿
    600
  • 【变更】长安汽车:控股股东拟发生变更 但不影响实际控制人

    【变更】长安汽车:控股股东拟发生变更 但不影响实际控制人【变更】长安汽车:控股股东拟发生变更 但不影响实际控制人【变更】长安汽车:控股股东拟发生变更 但不影响实际控制人【变更】长安汽车:控股股东拟发生变更 但不影响实际控制人

    汽车行业要闻速递:长安、东安控股股东拟变更,福田新能源汽车销量激增 近日,汽车行业发生多项重要事件:长安汽车和东安动力的控股股东均拟发生变更,而福田汽车则公布了其新能源汽车销量大幅增长的喜人消息。 1. 长安汽车:控股股东变更不影响实际控制人 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免…

    2026年10月19日 • 用户投稿
    000
  • Item 谨慎使用延迟初始化

    Item 谨慎使用延迟初始化Item 谨慎使用延迟初始化Item 谨慎使用延迟初始化Item 谨慎使用延迟初始化

    延迟初始化详解:何时使用以及如何避免陷阱 延迟初始化是指推迟字段初始化,直到第一次访问该字段。这种技术的主要优势在于,如果该字段从未被使用,则可以避免不必要的初始化工作,从而提高程序效率。 它适用于静态字段和实例字段。 然而,不当的延迟初始化可能导致性能问题或并发错误,因此需要谨慎使用。 最佳实践与…

    2026年10月19日 • 用户投稿
    000
  • 使用 Java 和 Spring Boot 为 Postgres 数据库生成 REST API

    使用 Java 和 Spring Boot 为 Postgres 数据库生成 REST API使用 Java 和 Spring Boot 为 Postgres 数据库生成 REST API使用 Java 和 Spring Boot 为 Postgres 数据库生成 REST API使用 Java 和 Spring Boot 为 Postgres 数据库生成 REST API

    本教程演示如何使用 monstarillo 为 postgresql 数据库生成 java api。该 api 使用 spring boot 和 springdoc 进行构建和文档记录,并支持对数据库表执行 crud 操作,同时还包含单元测试。 准备工作: 已安装 Monstarillo。Postg…

    2026年10月19日 • 用户投稿
    100
  • Kimi智能助手如何辅助创作 Kimi人工智能助手写作功能深度解析

    Kimi智能助手通过激发灵感、生成草稿和润色文案辅助写作,能加速创作流程但作品质量仍取决于用户自身的创意与判断。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ Kimi智能助手通过提供灵感、生成草稿、润色文案等方式辅助创作,它能加速写作流程…

    2026年10月19日
    200
  • 【合作】超声电子:公司为比亚迪提供汽车雷达板、车载触摸屏

    【合作】超声电子:公司为比亚迪提供汽车雷达板、车载触摸屏【合作】超声电子:公司为比亚迪提供汽车雷达板、车载触摸屏【合作】超声电子:公司为比亚迪提供汽车雷达板、车载触摸屏【合作】超声电子:公司为比亚迪提供汽车雷达板、车载触摸屏

    科技公司动态及英国政府要求苹果留“后门”事件 本文将简要概述近期几家科技公司的动态,并重点关注英国政府要求苹果公司留“后门”以访问用户云端数据这一事件。 1. 超声电子:比亚迪重要供应商 超声电子近日确认其为比亚迪提供汽车雷达板和车载触摸屏。虽然公司未透露具体订单信息,但强调其并非比亚迪的独家供应商…

    2026年10月19日 • 用户投稿
    200
  • 又鬼一个!《钢铁猎手》将于10月8日正式停服

    又鬼一个!《钢铁猎手》将于10月8日正式停服又鬼一个!《钢铁猎手》将于10月8日正式停服又鬼一个!《钢铁猎手》将于10月8日正式停服又鬼一个!《钢铁猎手》将于10月8日正式停服

    《坦克世界》、《战舰世界》等知名在线游戏的开发商wargaming宣布,其推出的机甲题材免费英雄射击游戏《钢铁猎手(steel hunters)》,将在2025年10月8日正式停止运营,距离进入steam抢先体验阶段仅过去三个月。该游戏最初于2025年4月2日上线steam平台。 今日,Wargam…

    2026年10月19日 • 用户投稿
    200
  • 如何通过ECharts获取饼图点击事件的具体数据?

    如何通过ECharts获取饼图点击事件的具体数据?如何通过ECharts获取饼图点击事件的具体数据?如何通过ECharts获取饼图点击事件的具体数据?如何通过ECharts获取饼图点击事件的具体数据?

    ECharts饼图点击事件:精准获取数据 本文介绍两种方法,帮助您在ECharts饼图中,通过点击事件精准获取对应扇形的数据信息。 方法一:利用piepiece实例 ECharts的getzr().on(‘click’)事件监听器,会在饼图点击时返回一个事件对象e。其中e.target指向piepi…

    2026年10月19日 • 用户投稿
    100
  • 美半导体巨头博通遭韩国调查,主动提议设立130亿韩元基金

    美半导体巨头博通遭韩国调查,主动提议设立130亿韩元基金美半导体巨头博通遭韩国调查,主动提议设立130亿韩元基金美半导体巨头博通遭韩国调查,主动提议设立130亿韩元基金美半导体巨头博通遭韩国调查,主动提议设立130亿韩元基金

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 韩国公平交易委员会(KFTC)2月9日宣布,驳回博通的和解提案,决定对这家美国半导体巨头提起诉讼。 博通被指控滥用市场支配地位,强制韩国机顶盒制造商购买其产品。尽管博通已承诺不再签订强制购买合同…

    2026年10月19日 • 用户投稿
    000
  • 如何进行即梦AI图片视频生成全流程

    如何进行即梦AI图片视频生成全流程如何进行即梦AI图片视频生成全流程如何进行即梦AI图片视频生成全流程如何进行即梦AI图片视频生成全流程

    即梦ai为用户打造了一个高效且富有创意的图片与视频生成平台。以下是其完整的使用流程说明。 首先,访问即梦AI官网,完成账号注册并登录,这标志着创作旅程的正式开启。成功登录后,用户将进入一个布局清晰、操作友好的界面,便于快速熟悉各项功能,轻松步入创作状态。 在图片生成环节,点击“图片生成”功能按钮,即…

    2026年10月19日 • 用户投稿
    200

发表回复

登录后才能评论
关注微信