20240619-James-快速鸟瞰并发编程, 呕心沥血整理的架构技术(第1篇)

享学课堂James 2019/06/19 15:27

接着第1篇后,我们继续来跟进一下并发编程的其它内容,如下:

Java程序员,你必须得知道并发编程概念

大家好,我是享学课堂风骚走位的James, 并发编程做为Java编程的核心灵魂, 不管在面试还是在工作中,都是非常重要的, 花了不少时间我整理出了并发编程的一个核心知识, 希望能够帮助更多的Java开发人员,在工作中合理使用多线程, 让你的代码更高效, 更直观。大概分为以下板块。

目录

► 简介

► 概念

►Java内存模型:Happens-before 关系

► 标准同步功能

► 安全发布

► 对象不可变

► 线程Thread类

► 线程的活跃度: 死锁与活锁

► java.util.concurrent包

第1节 简介

所谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。这段是从百度百科找到的解释, 我而的解释, 你所写的任何一行代码, 它的执行都是用线程来运行的, 也就是说并发编程从直接决定了你系统性能运行情况, 能让你的系统起飞, 也能让你的系统性能变成蜗牛。

第2节 概念

从JDK的最低版本开始,Java就支持了线程和锁等关键并发概念。那么这些概念务必记到你脑海深处,哈哈.

概念 描述
原子操作 原子操作是指不会被线程调度机制打断的操作( 其实就是你的业务操作一开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)
可见性 一个线程对共享变量值的修改,能够及时的被其他线程看到。

前提条件

当多个线程对共享资源执行一系列操作时, 它们会对竞争共享资源, 每个线程的操作顺序不一样, 会导致多个不可预期的操作结果。比如以下的代码就为非线程安全的,其中value可以多次初始化,因为if (value == null)做了null 判断, 然后初始化的, 延迟初始化的字段不是原子的

class JamesLazy {
private volatile T value;
T get() {
if (value == null)//这里做了null判断, 延迟初始化的字段它不是原子的
value = initialize();
return value;
}
}

<

你可能感兴趣的:(架构,dubbo)