java主线程等待多个子线程中任意一个有结果后,主线程继续执行
1.背景
2.代码
package com.qianxingniwo.ls; import org.junit.Test; import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.locks.LockSupport; /** * @Copyright (C) XXXXX技有限公司 * @Author: ldp * @Date: 2023/7/26 15:30 * @Description: */ public class Demo01 { /** * 测试: */ @Test public void test01() { Thread threadMain = Thread.currentThread(); AtomicReference<String> result = new AtomicReference<>(""); Thread thread1 = new Thread(() -> { System.out.println("1"); try { Thread.sleep(5 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("1-结束"); }); Thread thread2 = new Thread(() -> { System.out.println("2"); try { Thread.sleep(3 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("2-结束"); }); Thread thread3 = new Thread(() -> { System.out.println("3"); try { Thread.sleep(1 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } result.set("线程3返回了结果"); LockSupport.unpark(threadMain); System.out.println("3-结束"); }); thread1.start(); thread2.start(); thread3.start(); System.out.println("主线程等待结果"); LockSupport.park(this); System.out.println("主线程获得了结果:" + result.get()); try { Thread.sleep(6 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("执行完成..."); } }
完美
分类:
图文教程之java多线程补充
标签:
多线程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2019-07-26 oracle之PLSQL导出-导入-表-存储过程等操作--亲测好用