Semaphore实现线程同步
以下是您提供的 14 个 Java 并发程序示例的简要执行说明和核心要点。1. Semaphore信号量示例 (Listing 1)功能演示使用Semaphore控制对共享资源Shared.count的访问确保同一时间只有一个线程IncThread或DecThread能修改它。执行运行SemDemo类的main方法。两个线程将交替获取许可、修改count并释放许可输出结果将显示count从 0 递增到 5再递减回 0 的序列不会出现交错 。2. 生产者-消费者模型 (Listing 2)功能使用两个Semaphore(semProd和semCon) 实现经典的生产者-消费者同步确保生产者在消费者取走数据前不会覆盖数据消费者在没有新数据时等待 。执行运行ProdCon类的main方法。输出将交替显示Put和Got消息顺序为Put: 0,Got: 0,Put: 1,Got: 1... 直至 19。3. CountDownLatch 示例 (Listing 3)功能演示CountDownLatch用于让一个或多个线程等待其他线程完成操作。主线程调用await()等待工作线程 (MyThread) 每完成一次任务调用countDown()当计数器减至 0 时主线程继续执行 。执行运行CDLDemo类的main方法。输出顺序为Starting然后打印 0 到 4最后打印Done。4. CyclicBarrier 示例 (Listing 4)功能演示CyclicBarrier让一组线程相互等待到达屏障点后一起继续执行并可选择执行一个屏障动作 (BarAction) 。执行运行BarDemo类的main方法。三个线程 (A,B,C) 打印各自名称后在await()处等待当所有三个线程都到达后执行BarAction打印Barrier Reached!然后所有线程继续。5. Exchanger 示例 (Listing 5)功能演示Exchanger用于两个线程间交换数据。MakeString线程构建字符串UseString线程消费字符串两者通过exchange()方法同步交换数据 。执行运行ExgrDemo类的main方法。MakeString生成字符串如ABCDE与UseString交换UseString打印Got: ABCDE此过程重复三次。6. Phaser 基础示例 (Listing 6)功能演示Phaser作为更灵活的同步屏障支持动态注册/注销参与线程及分阶段 (Phase) 同步。主线程和工作线程 (A,B,C) 协同推进多个阶段 。执行运行PhaserDemo类的main方法。输出将显示每个线程依次开始三个阶段主线程在每个阶段完成后打印Phase X Complete最后打印The Phaser is terminated。7. 自定义 Phaser 示例 (Listing 7)功能通过继承Phaser并重写onAdvance()方法控制固定阶段数本例为 4 个阶段的执行。当所有阶段完成或注册方为 0 时Phaser 终止 。执行运行PhaserDemo2类的main方法。每个工作线程会循环执行阶段直到 Phaser 终止输出显示每个阶段的开始和完成信息。8. Executor 框架示例 (Listing 8)功能演示使用ExecutorService(newFixedThreadPool(2)) 管理线程池执行任务。结合CountDownLatch等待所有任务完成 。执行运行SimpExec类的main方法。四个任务 (A,B,C,D) 被提交到只有两个线程的池中执行每个任务打印 0 到 4。主线程等待所有任务完成后打印Done。9. Callable 与 Future 示例 (Listing 9)功能演示使用Callable接口替代Runnable提交可返回结果的任务并通过Future对象获取结果。展示了线程池执行计算任务并汇总结果 。执行运行CallableDemo类的main方法。三个Callable任务计算和、斜边、阶乘被提交执行主线程通过Future.get()获取并打印结果55, 5.0, 120。10. ReentrantLock 示例 (Listing 10)功能演示使用ReentrantLock实现显式锁来同步对共享资源 (Shared.count) 的访问提供了比synchronized更灵活的锁操作如可中断、超时、公平性等。执行运行LockDemo类的main方法。两个线程 (A,B) 将竞争锁获得锁的线程增加Shared.count并睡眠 1 秒然后释放锁。输出显示锁的获取和释放过程。11. Atomic原子变量示例 (Listing 11)功能演示使用AtomicInteger实现无锁的线程安全计数器。getAndSet()操作是原子的无需外部同步 。执行运行AtomicDemo类的main方法。三个线程 (A,B,C) 并发调用Shared.ai.getAndSet(i)由于是原子操作不会出现数据竞争但输出顺序不确定。12. Fork/Join 框架 (RecursiveAction) 示例 (Listing 12)功能演示使用ForkJoinPool和RecursiveAction并行处理数组计算平方根。任务在数据量超过阈值 (seqThreshold) 时递归分解利用工作窃取算法提高性能 。执行运行ForkJoinDemo类的main方法。程序将 0 到 99999 的数组元素并行转换为平方根并打印前 10 个元素的原始值和转换后的值。13. Fork/Join 参数化实验示例 (Listing 13)功能扩展 Listing 12允许通过命令行参数设置并行级别 (parallelism) 和顺序处理阈值 (threshold)用于实验和性能调优 。执行需带两个命令行参数运行例如java FJExperiment 2 1000。程序将根据参数并行处理数组偶数索引平方根奇数索引立方根并输出执行时间。14. Fork/Join框架 (RecursiveTask) 示例 (Listing 14)功能演示使用RecursiveTaskDouble执行有返回值的并行计算数组求和。任务递归分解子任务结果通过fork()/join()合并 。执行运行RecurTaskDemo类的main方法。程序并行计算一个包含正负交替值的数组的总和并打印结果Summation 0.0因为正负抵消。参考来源Java 多线程同步机制探秘Java多线程与同步机制深入理解Java多线程同步机制Java 多线程同步机制Java多线程的同步机制

相关新闻

软件开发中的上下文湮灭:从代码考古到主动防腐的工程实践

软件开发中的上下文湮灭:从代码考古到主动防腐的工程实践

那天下午,我盯着屏幕上那个运行了三天三夜的脚本,它终于吐出了最后一行日志。脚本的任务很简单:遍历一个旧项目的代码仓库,找出所有被标记为“待重构”的注释块,然后生成一份报告。报告生成了,密密麻麻列出…

2026/8/15 22:08:05 阅读更多 →
Clawdbot本地化AI助手部署与配置指南

Clawdbot本地化AI助手部署与配置指南

1. Clawdbot项目概述Clawdbot是一款基于Openclaw框架开发的AI助手工具,主要用于自动化任务处理和智能交互。作为一款新兴的AI工具,它支持本地化部署和云端运行两种模式,能够根据用户需求进行灵活配置。从技术架构来看,Clawdbot采用…

2026/8/15 22:08:05 阅读更多 →
Java Stream核心操作精讲

Java Stream核心操作精讲

以下是您提供的 10 个 Java Stream API 程序示例的执行说明和核心要点。 1. 基础 Stream 操作示例 (Listing 1) 功能:演示 Stream 的基础操作,包括获取流、使用 min()/max() 查找极值、sorted() 排序、filter() 过滤以及 forEach() 终端操作 。执行&am…

2026/8/15 22:08:05 阅读更多 →

最新新闻

国内专业的地埋式水箱供应商哪家专业

国内专业的地埋式水箱供应商哪家专业

近年来,随着海绵城市建设和地下空间开发的推进,地埋式水箱在市政排水、商业综合体、工业园区等场景的需求量激增。然而,面对市场上五花八门的供应商,如何挑选真正专业、可靠的企业,成了工程方和采购方最头疼的问题。笔…

2026/8/16 0:30:01 阅读更多 →
GPTZero降AI怎么过,BunnyScholar英文最省心

GPTZero降AI怎么过,BunnyScholar英文最省心

GPTZero降AI怎么过除了 Turnitin,很多学校和写作平台也用 GPTZero 来查 AI 率。GPTZero 对英文文本特别敏感,很多同学的英文作业、论文一交上去就被标了 AI 高风险。这篇讲讲,GPTZero 降 AI 怎么过,以及为什么用 BunnyScholar 的英…

2026/8/16 0:29:01 阅读更多 →
190、LLC谐振变换器的样机调试实战(问题定位)

190、LLC谐振变换器的样机调试实战(问题定位)

190、LLC谐振变换器的样机调试实战(问题定位) 写在前面:一块冒烟的板子 上周五下午三点十七分,实验室空调坏了,我正对着第三版LLC样机发呆。示波器上那个本该平滑的正弦电流波形,此刻像得了帕金森——高频抖动叠加着莫名其妙的毛刺。更糟的是,MOSFET的散热片已经烫到能…

2026/8/16 0:21:59 阅读更多 →
188、LLC谐振变换器的样机调试实战(EMI测试)

188、LLC谐振变换器的样机调试实战(EMI测试)

188、LLC谐振变换器的样机调试实战(EMI测试) 一、从一次EMI超标说起 去年做一款300W的LLC电源,样机功能测试一切正常,效率93%,温升也OK,心里美滋滋准备送样。结果EMI预扫一上,150kHz到1MHz之间直接炸了——传导发射超标12dB,那个尖峰像一把刀插在报告上。 拆开屏蔽罩…

2026/8/16 0:21:59 阅读更多 →
VS可视化Git变基:图形界面操作指南与最佳实践

VS可视化Git变基:图形界面操作指南与最佳实践

1. 从命令行到图形界面:为什么我们需要在VS里做变基?如果你用过Git,大概率对git rebase这个命令又爱又恨。爱的是它能创造出干净、线性的提交历史,让项目脉络清晰得像一条直线;恨的是操作稍有不慎,就可能引…

2026/8/16 0:20:59 阅读更多 →
TranslucentTB完整指南:5分钟让Windows任务栏变透明的免费美化方案

TranslucentTB完整指南:5分钟让Windows任务栏变透明的免费美化方案

TranslucentTB完整指南:5分钟让Windows任务栏变透明的免费美化方案 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是不是也…

2026/8/16 0:16:58 阅读更多 →

日新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/14 13:40:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/14 14:06:45 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/15 2:35:29 阅读更多 →