如何使用代码实现并发开发呢?

欢喜 Java经验 发布时间:2025-06-09 10:59:54 阅读数:13292 1
下文笔者讲述java代码实现并发编程的方法及示例

并发编程软实现的简介

    在并发编程中
  “软实现”通常指
     是不依赖硬件或操作系统级别的原语(如原子指令、锁等)
 而是通过软件层面的设计与算法来实现并发控制、任务调度、资源共享等目标。

“并发软实现”常见含义

类型描述
无锁设计(Lock-Free)不使用传统锁机制,
通过CAS(Compare and Swap)
等原子操作实现线程安全
非阻塞算法(Non-blocking) 所有线程都能继续执行,
即使其他线程失败或挂起
乐观并发控制(Optimistic Concurrency Control) 假设冲突较少,先执行操作,
提交时检查是否发生冲突
协程/轻量级线程(如 Java 的 Virtual Thread) 在用户态模拟多线程,
减少上下文切换开销
事件驱动模型(Event-driven) 使用回调、
异步处理实现高并发

常见“软实现”并发技术

✅1.CAS(Compare And Swap)
 -原理:比较并交换,是一种无锁原子操作。
 -用途:实现 `AtomicInteger`、`ConcurrentHashMap`、`AQS`(AbstractQueuedSynchronizer) 等。
 -优点:避免加锁带来的性能损耗和死锁风险。
 -缺点:可能出现 ABA 问题、自旋浪费 CPU。

  AtomicInteger atomicInt = new AtomicInteger(0);
  boolean success = atomicInt.compareAndSet(0, 1); //如果当前值是 0,则更新为 1


✅2.volatile+状态检测
 -原理:利用`volatile`保证变量可见性,
结合状态判断实现线程协作 -用途:替代简单`synchronized`或`wait/notify` -例: private volatile boolean flag = false; public void waitForFlag() { while (!flag) { // 等待 flag 变化 } } 注意:这种方式可能造成忙等(CPU 消耗),建议配合 sleep/yield 使用。 ✅3.协程/虚拟线程(Virtual Threads) -原理:由JVM 或框架管理的轻量级线程,无需操作系统内核参与调度。 -用途:实现极高并发场景下的任务调度。 -Java支持:JDK 21+ 引入了虚拟线程支持。 Thread virtualThread = Thread.ofVirtual().start(() -> { System.out.println("Running in virtual thread"); }); ✅特点: -极低内存占用 -可创建数十万并发线程 -非常适合 IO 密集型任务 ✅4.Actor模型(如 Akka) -原理:每个 Actor 是独立实体,只能通过消息通信修改状态。 -用途:实现分布式系统中的并发与容错。 -优点:天然避免共享资源竞争。 -缺点:学习成本较高,调试复杂。 ✅5.Future/Promise+回调机制 -原理:通过异步回调处理结果,避免主线程阻塞。 -用途:适用于网络请求、数据库查询等耗时操作。 -Java实现:`CompletableFuture`、`FutureTask` CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> { return "Hello"; }); future.thenAccept(result -> System.out.println("Result: " + result)); ✅6.Event Loop(事件循环) -原理:单线程轮询事件队列,按需分发任务。 -用途:Node.js、Netty、Swing 等框架常用。 -优点:无锁、高效处理大量 IO 请求。 -缺点:不适合 CPU 密集型任务。

锁软实现vs硬实现对比表

对比项 软实现 硬实现
是否使用锁 否(或少用) 是(如synchronized、ReentrantLock)
是否依赖底层原子指令 是(如 CAS) 是(如锁、原子操作)
性能 通常更高(尤其在高并发下) 中等偏上
实现难度 较高 较低
容易出现的问题 ABA、忙等、竞态条件 死锁、锁粒度大、资源争用
适用场景 高并发、IO 密集型任务 通用并发控制

锁软实现的场景说明

技术是否属于“软实现”场景
`CAS`无锁数据结构、原子操作
`volatile` + 状态检测简单线程协调
`CompletableFuture`异步编程
`Actor模型`分布式并发系统
`Virtual Thread`高并发 IO 服务
`synchronized`/`ReentrantLock`传统线程同步
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202506/17494399638492.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者