![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 94
Kfaino
对技术感兴趣的朋友欢迎私信分享见解
展开
-
并发编程 | 序章 - 欢迎来到并发编程世界
(正确的学习路径) 他像一道明灯,为我指引了前行的方向,教我如何在并发编程的世界中稳步行走,如何处理复杂的问题,如何避免错误的决策。但是,如果他们需要共享数据,就需要用到"volatile"这把神奇的剑,它可以保证数据的可见性,让每个线程看到的数据都是最新的。在这个世界中,每个线程都是一位勇敢的冒险者,他们在执行任务的过程中,会遇到各种各样的挑战,但是只要他们学会了如何正确使用这些工具,就能够胜任任何任务,完成各种各样的冒险。欢迎来到并发编程的世界,这是一个充满活力,异彩纷呈的大陆,被称为Java世界。原创 2023-07-19 16:28:13 · 184 阅读 · 0 评论 -
并发编程 | 理论基础 - 掌握并发编程的钥匙
首先,我为你展示了一个并发世界观。把你置身于其中,以一位初学者的角度学习这个世界的运行规律。并且带你理解两个非常重要的概念:“并发与并行”,“进程与线程”。然后用21实际的知识储备来理解这个异世界存在的难题,并且带你吧这些问题都解决掉。原创 2023-07-15 09:51:31 · 156 阅读 · 1 评论 -
并发编程 | 理论基础 - Java内存模型
Java内存模型并不是真实的物理内存模型,而是一个抽象的概念,主要解决两个问题:一是定义了内存和线程的交互关系;二是解决了由于多线程通过共享内存进行通信时,存在的内存一致性问题。通过对Java内存模型的深入探讨,我们可以看到,JMM是Java并发编程的基石,它定义了共享变量的可见性、原子性和有序性,为构建正确、高效的并发程序提供了重要保障。同时,JMM也是Java并发编程的一个重要考察点,深入理解和掌握JMM对于Java程序员来说,尤为重要。原创 2023-07-24 07:57:13 · 90 阅读 · 0 评论 -
并发编程 | 线程-并发世界的主角
作为线程(主角),我真心希望程序员朋友们能注意防范死锁问题。请务必谨慎处理并发编程中的资源分配和锁管理,避免编写引发死锁的代码。保持清醒的头脑,提升编程技艺,让我们一起在多线程世界里航行更加顺利。原创 2023-07-16 11:54:02 · 145 阅读 · 0 评论 -
并发编程 | 线程池-资源管理利器
本文我们以一个例子告诉你如何设计一个简单的线程池,这个线程池需要哪些基本的代码逻辑。然后通过源码为你解析了从execute入口的线程池工作原理。最后我们还总结了几个常见误区,以及关于线程池更高级的使用案例。原创 2023-07-17 01:19:37 · 117 阅读 · 0 评论 -
并发编程 | 线程安全-编写零错误代码
现在,让我们回顾一下重要知识点。首先,我为你揭示了线程安全问题的根源,主要包括可见性、原子性以及有序性这三大原则。然后,我从语言层面向你展示了Java如何应对这些问题,提出了有效的解决策略。其中,Java内存模型(Java Memory Model,简称JMM)无疑是其中最重要的一环,它为我们处理多线程带来的问题提供了基础的理论架构。针对JMM内存模型,我对其进行了详尽的解读,并通过实际的代码示例,帮助你更深入地理解其运行原理和使用方法。原创 2023-07-15 22:43:59 · 154 阅读 · 1 评论 -
并发编程 | 关键字
synchronized是Java中的一个关键字,它可以用于方法和代码块,主要用于实现对资源的互斥访问。当一个线程进入了由synchronized保护的代码块或方法,其他试图访问该保护代码的线程会被阻塞,直到前一个线程退出。// 方法体 }// 代码块 } }volatile是Java中的一个关键字,它用于标记一个变量,使其具有可见性和防止指令重排序的特性。原创 2023-07-24 00:02:55 · 66 阅读 · 0 评论 -
并发编程 | ThreadLocal - 线程的私有存储
ThreadLocal是Java中的一个类,用于创建线程本地变量。每个线程都会创建一个独立的变量副本,每个副本对其他线程都是隔离的。这样,数据在每个线程间都不会互相影响,从而实现了线程安全的数据共享。尽量在不使用ThreadLocal变量时调用其remove()方法,将其清除,避免可能的内存泄露。在使用ThreadLocal变量前,确保已经进行了初始化,以避免空指针异常。适当的设计和使用ThreadLocal变量,避免在不必要的情况下长期存储大对象,以降低内存压力。原创 2023-07-20 23:41:41 · 536 阅读 · 0 评论 -
并发编程 | 锁 - 并发世界的兜底方案
本文从一个案例分析的角度进行切入,为你提供三套策略。其中锁是最后的兜底策略,因此我为了突出其重点以syncronized关键字为中心分析其原理,并且为你讲解JDK1.5后出现的其它同步原语,提供示例。原创 2023-07-17 16:30:12 · 122 阅读 · 0 评论 -
并发编程 | 同步控制器AQS - 从复杂到简单的并发管理
AQS,即AbstractQueuedSynchronizer,是Java并发编程框架中的一个核心组件,用于构建锁或者其他同步组件。它通过内部的FIFO队列管理那些尝试获取但未成功的线程,以及提供了一种条件变量机制,实现了高效稳定的多线程并发控制。:这是Java并发编程框架中的一个抽象类,它提供了一种基础机制,用于创建自定义的同步控制工具。构建锁或其他同步组件。原创 2023-07-18 22:56:02 · 158 阅读 · 0 评论 -
并发编程 | 并发工具类 - 序章
并发工具类是一组在Java并发编程中使用的类,它们为多线程操作提供了支持和辅助。这些工具类主要可以分为并发容器原子类并发控制工具和并发执行框架四大框架,它们分别提供了线程安全的数据结构、原子操作支持、同步控制机制以及线程管理和执行的框架。并发工具类主要位于Java的java.util.concurrent包及其子包中。看完上面的描述,是不是对别人经常提起的并发工具类相关的概念加深了不少?我们在沟通技术的时候常常一会说并发工具类,一会又说并发容器,其实所描述都是一类东西。原创 2023-07-21 15:39:22 · 42 阅读 · 0 评论 -
并发编程 | 并发工具类 - 原子类
并发编程是现代软件开发的一个重要部分,特别是在多核处理器的环境中,为了充分利用系统资源,我们常常需要写出高效并发的代码。在Java中,Java.util.concurrent(JUC)提供了一系列的工具类来帮助我们进行高效的并发编程,而原子类就是其中的一类重要工具。原子类,是java.util.concurrent.atomic包下提供的一组工具类,这些工具类用于进行原子性操作。原创 2023-07-24 12:43:41 · 92 阅读 · 0 评论 -
并发编程 | 并发工具类 - 并发控制工具
并发控制工具是并发编程的重要组成部分,它们提供了丰富的功能,帮助我们更好地进行并发编程。在使用并发控制工具时,我们需要根据需求和场景选择合适的工具,并注意线程安全和死锁等并发问题。重申并发编程的核心要点:明确并发编程的目标(正确性、性能),理解并正确使用并发工具,避免并发的常见问题(线程安全、死锁)。原创 2023-07-24 15:37:32 · 106 阅读 · 0 评论 -
并发编程 | 并发工具类 - 并发容器
Java并发包(java.util.concurrent)是从Java 5开始引入的,它包含了一系列用于并发编程的工具类,例如线程池、计数器、并发集合等。其中,用于并发编程的集合类被称为并发容器。并发集合:如等并发队列:如等并发Set:如等并发List:如等接下来,我们将逐一介绍这些并发容器的内部实现原理,并且通过一些示例来展示如何在实际编程中使用它们。原创 2023-07-24 14:38:01 · 91 阅读 · 1 评论 -
并发编程 | 从Future到CompletableFuture - 简化 Java 中的异步编程
好了,到这里就结束了,我们来回顾一下。首先,我带你回顾了一下Java并发世界的编年史。紧接着,我带你体验了一下古人经常使用的Future。感到它的不妙之后,我带你回到CompletableFuture。紧接着有深入了解了它的全貌以及使用方法。最后,希望阅读到这里的你,不要忘记回答问题哦。原创 2023-07-13 13:54:18 · 896 阅读 · 3 评论 -
并发编程 | CompletionService - 如何优雅地处理批量异步任务
让我们一起回顾今天所学。首先,我引导你使用了CompletionService和ExecutorService来实现了先前复杂的需求。相较于CompletableFuture,它们可能显得更为传统,但也更易理解。然后,我们一起探索了CompletionService的存在意义。我们试图解答,既然ExecutorService已经足够应对需求,为什么还要有CompletionService这样的设计。原创 2023-07-25 15:17:15 · 886 阅读 · 0 评论 -
并发编程 | Fork/Join 并行计算框架 - 利用‘分而治之’提升多核CPU效率
我们来回顾一下,我们首先深入探讨了Fork/Join框架的本质,然后详细阐述了其核心概念并进行了源码分析。接着,我们通过实际操作深化了对Fork/Join框架的理解。最后,我们对该框架的优点与局限进行了全面评估,并探索了其他可选的并发模型。在这个过程中,我们还解答了一些常见的关于Fork/Join框架使用中的问题,希望对你有所帮助。原创 2023-07-19 20:56:47 · 471 阅读 · 0 评论 -
并发编程 | 并发编程框架 - Disruptor - 深入理解高性能异步处理框架
好,我们来回顾一下。首先,我向你揭示了Disruptor框架高性能的秘密。然后,我们一起深入探讨了Disruptor框架本身。在此基础上,我们深入剖析了Disruptor的工作原理,这让我们对源码的理解更加深入。最后,我们分析了Disruptor和ArrayBlockingQueue在性能上的差异,并对在这个过程中需要注意的问题进行了详细的说明。如果你计划在生产环境中使用Disruptor,我希望你能充分考虑这些问题。至此,本篇结束。原创 2023-07-23 14:47:34 · 538 阅读 · 0 评论