news 2026/3/1 12:06:35

Java 异步转同步方案:使用 CountDownLatch、使用 CyclicBarrier、使用 wait/notify + synchronized

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java 异步转同步方案:使用 CountDownLatch、使用 CyclicBarrier、使用 wait/notify + synchronized

Java 异步转同步方案

准备阶段
  • Student.java
publicclassStudent{publicvoidstudy(StudentStudyObserverstudentStudyObserver){newThread(()->{try{TimeUnit.SECONDS.sleep(5);}catch(InterruptedExceptione){e.printStackTrace();}studentStudyObserver.onFinish();}).start();}}
  • StudentStudyObserver.java
publicinterfaceStudentStudyObserver{voidonFinish();}
1、使用 CountDownLatch
CountDownLatchcountDownLatch=newCountDownLatch(1);Studentstudent=newStudent();student.study(()->{System.out.println("学生学习完了");countDownLatch.countDown();});try{countDownLatch.await();}catch(InterruptedExceptione){e.printStackTrace();}System.out.println("继续执行其他任务");
2、使用 CyclicBarrier
CyclicBarriercyclicBarrier=newCyclicBarrier(2);Studentstudent=newStudent();student.study(()->{System.out.println("学生学习完了");try{cyclicBarrier.await();}catch(InterruptedException|BrokenBarrierExceptione){e.printStackTrace();}});try{cyclicBarrier.await();}catch(InterruptedException|BrokenBarrierExceptione){e.printStackTrace();}System.out.println("继续执行其他任务");
3、使用 wait/notify + synchronized
privatevolatilebooleanfinished=false;
Objectlock=newObject();Studentstudent=newStudent();student.study(()->{synchronized(lock){System.out.println("学生学习完了");finished=true;lock.notify();}});try{synchronized(lock){while(!finished){lock.wait();}}}catch(InterruptedExceptione){e.printStackTrace();}System.out.println("继续执行其他任务");
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/22 5:35:55

Windows热键冲突排查实战:Hotkey Detective完整指南

Windows热键冲突排查实战:Hotkey Detective完整指南 【免费下载链接】hotkey-detective A small program for investigating stolen hotkeys under Windows 8 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾经按下熟悉的快捷键却毫…

作者头像 李华
网站建设 2026/3/1 0:33:21

Windows热键冲突终极解决方案:一键检测快捷键占用程序

Windows热键冲突终极解决方案:一键检测快捷键占用程序 【免费下载链接】hotkey-detective A small program for investigating stolen hotkeys under Windows 8 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 当你按下熟悉的CtrlC准备复制内…

作者头像 李华
网站建设 2026/2/24 15:59:14

树莓派摄像头驱动编译:自定义内核模块实战案例

树莓派摄像头驱动编译实战:从零构建内核级图像采集系统你有没有遇到过这样的场景?手头有一颗工业级图像传感器,性能远超树莓派官方摄像头,但libcamera不支持、raspistill识别不了——它静静地躺在开发板上,却无法“睁开…

作者头像 李华
网站建设 2026/2/27 4:10:50

Python代码生成实战:用Qwen3-4B轻松开发GUI应用

Python代码生成实战:用Qwen3-4B轻松开发GUI应用 1. 引言:AI驱动下的Python GUI开发新范式 1.1 背景与挑战 在传统软件开发流程中,构建一个功能完整的图形用户界面(GUI)应用往往需要开发者具备扎实的前端布局知识、事…

作者头像 李华
网站建设 2026/2/25 13:13:17

UnrealPakViewer:5分钟掌握虚幻引擎Pak文件完美解决方案

UnrealPakViewer:5分钟掌握虚幻引擎Pak文件完美解决方案 【免费下载链接】UnrealPakViewer 查看 UE4 Pak 文件的图形化工具,支持 UE4 pak/ucas 文件 项目地址: https://gitcode.com/gh_mirrors/un/UnrealPakViewer 你是否曾经面对虚幻引擎打包后的…

作者头像 李华