news 2026/4/29 18:21:27

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/4/27 19:37:18

避坑指南:Cute_Animal_For_Kids_Qwen_Image常见问题解决方案

避坑指南:Cute_Animal_For_Kids_Qwen_Image常见问题解决方案 1. 引言 1.1 使用场景与核心价值 Cute_Animal_For_Kids_Qwen_Image 是一款基于阿里通义千问大模型(Qwen)开发的图像生成镜像,专为儿童内容设计,能够根据…

作者头像 李华
网站建设 2026/4/29 16:20:44

Python OCC 三维几何建模实战指南

Python OCC 三维几何建模实战指南 【免费下载链接】pythonocc-core tpaviot/pythonocc-core: 是一个基于 Python 的 OpenCASCADE (OCCT) 几何内核库,提供了三维几何形状的创建、分析和渲染等功能。适合对 3D 建模、CAD、CAE 以及 Python 有兴趣的开发者。 项目地址…

作者头像 李华
网站建设 2026/4/23 21:34:59

3分钟学会PDF对比:diff-pdf终极使用指南

3分钟学会PDF对比:diff-pdf终极使用指南 【免费下载链接】diff-pdf A simple tool for visually comparing two PDF files 项目地址: https://gitcode.com/gh_mirrors/di/diff-pdf 在日常工作中,你是否经常需要对比两个PDF文件?无论是…

作者头像 李华
网站建设 2026/4/25 8:12:39

BGE-Reranker-v2-m3参数调优:如何平衡速度与精度

BGE-Reranker-v2-m3参数调优:如何平衡速度与精度 1. 引言 1.1 技术背景与核心挑战 在当前的检索增强生成(RAG)系统中,向量数据库通过语义相似度进行初步文档召回,但其基于嵌入距离的匹配机制存在固有局限。例如&…

作者头像 李华
网站建设 2026/4/24 15:13:39

轻量级语音合成神器:CosyVoice Lite效果实测分享

轻量级语音合成神器:CosyVoice Lite效果实测分享 1. 引言:轻量化TTS的现实需求 随着智能终端设备的普及,语音合成(Text-to-Speech, TTS)技术正从云端向边缘侧快速迁移。传统的大型语音模型虽然音质出色,但…

作者头像 李华
网站建设 2026/4/25 4:09:38

零基础玩转Youtu-2B:手把手教你搭建个人AI对话助手

零基础玩转Youtu-2B:手把手教你搭建个人AI对话助手 1. 引言 在人工智能技术快速普及的今天,拥有一个专属的AI对话助手已不再是开发者的“奢侈品”。得益于轻量化大模型的发展,如今我们可以在本地环境甚至低算力设备上部署高性能的语言模型服…

作者头像 李华