本书围绕Java编程中多线程编程的基础与应用设计分为四个部分来展开讲解,包括多线程技术知识、Java ClassLoader、深入理解volatile关键字、多线程设计架构模式。Java 编程语言是工业级的编程语言,在诸多应用、诸多场景下被广泛使用,多线程技术作为Java语言和应用的基础能力,对其的 ...
分类:
编程语言 时间:
2020-07-07 15:16:11
阅读次数:
57
这是我在写 Java 并发程序的时候遵循的一些最佳实践: a)给线程命名,这样可以帮助调试。 b)最小化同步的范围,而不是将整个方法同步,只对关键部分做同步。 c)如果可以,更偏向于使用 volatile 而不是 synchronized。 d)使用更高层次的并发工具,而不是使用 wait() 和 ...
分类:
编程语言 时间:
2020-07-05 23:19:05
阅读次数:
95
一种实践是用 volatile 修饰 long 和 double 变量,使其能按原子类型来读写。 double 和 long 都是 64 位宽,因此对这两种类型的读是分为两部分的,第一次 读取第一个 32 位,然后再读剩下的 32 位,这个过程不是原子的,但 Java 中 volatile 型的 l ...
分类:
其他好文 时间:
2020-07-05 21:33:41
阅读次数:
70
volatile 这个关键字可能很多朋友都听说过,或许也都用过。在 Java 5 之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在 Java 5之后,volatile 关键字才得以重获生机。 ...
分类:
编程语言 时间:
2020-07-03 23:34:06
阅读次数:
52
Memory-Usage 是显存使用率 6423MiB / 11177MiB 也就是这一栏 Volatile GPU util GPU利用率 主要是看这两个 还有一个关键要素 显存占用和GPU占用是两个不一样的东西, **显卡是由GPU和显存等组成的**, 显存和GPU的关系 有点类似于内存和CPU ...
分类:
其他好文 时间:
2020-07-03 17:35:47
阅读次数:
61
背景 最近在很多JDK源码中都看到了Treiber stack这个单词。 比如CompletableFuture中的: volatile Completion stack; // Top of Treiber stack of dependent actions 比如FutureTask中的: /* ...
分类:
其他好文 时间:
2020-07-03 00:37:03
阅读次数:
81
线程同步 同步:同步控制着线程之间的执行顺序,不让他们抢占式执行。在保证数据安全的前提下,让线程能够按照某种特定的顺序访问临界资源,从而有效避免饥饿问题,叫做同步。 原子访问:同一时刻,只允许一个线程访问临界资源; 原子操作:指多步操作组成的一个操作;原子操作中线程不会被切换,线程切换要么在原子操作 ...
分类:
编程语言 时间:
2020-06-29 09:53:49
阅读次数:
69
这个模式很简单,直接上代码: public class Singleton { private static Singleton uniqueInstance; private Singleton() {}; public static Singleton getInstance() { if(un ...
分类:
其他好文 时间:
2020-06-27 11:42:55
阅读次数:
50
说起多线程的两个修饰符,保证线程安全首先就会想到synchronized和voiltile这两个。 为什么会出现线程不安全? 多线程是相对cpu指令的,cpu本身是对一个又一个指令进行顺序执行的。多线程就是卡单个指令节点进行插入执行(这里说法估计有点问题,以后想起来再改吧)。jdk本身提供了对多个线 ...
分类:
其他好文 时间:
2020-06-27 00:02:10
阅读次数:
71
无锁 乐观锁(非阻塞) 共享模式之无锁 CAS 与 volatile 原子整数 原子引用 原子累加器 Unsafe CAS无锁方案 CAS无锁主要看重三个变量: 预估值 + 修改值 + 主存值 预估值: 主要用来判断是否等于主存值, 是则将修改值修改到主存值中 修改值: 即将需要修改的新值, 修改到 ...
分类:
其他好文 时间:
2020-06-26 18:28:48
阅读次数:
57