平时多线程开发一般就是使用 Runnable,Callable,Thread,FutureTask,ThreadPoolExecutor
这些内容,之前聊到 FutureTask 是同步非阻塞,将这些内容组合在一起去解决一些并发编程的问题时,很多时候不能去完成多线程的编排,这个时候就需要异步非阻塞的 CompletableFuture
来处理这些任务之间的逻辑关系了。
Java 创建线程的方式,一般常用的是 Thread
、Runnable
,如果需要当前处理的任务有返回结果的话,
需要使用 Callable
,Callable
运行需要配合 Future
,那 Future
是个什么鬼?FutureTask
又是个什么鬼?你是否深入了解过源码的处理?接下来我们将分析 Future
接口和 FutureTask
类的关系,然后深入分析 FutureTask
的源码实现。
Java 并发包(JUC)提供了一系列强大的并发工具类,本文将深入解析常用工具类的原理,并通过完整代码示例展示其实际应用场景
在之前的内容中已经讲述了 JMM内存模型与volatile,同时也讲述了保障线程安全的 同步互斥 与 异步非阻塞 两种方式,更描述了异步非阻塞中的 CAS
原理以及 CAS
的一些经典问题, 本文接下来继续完成我们的并发版图,了解下什么是 Atomic
。
在 Java 并发编程中,synchronized 是保障线程安全的核心关键字。它提供了一种简单有效的机制来实现互斥访问共享资源。然而,理解其底层原理、工作方式以及最佳实践对于编写高效、健壮的并发程序至关重要。