状态类型 在指定的时间点, 一个线程有且只有一种状态。 这些状态是 JVM 的状态, 他们并没有反映操作系统的状态。 定义 Thread 的状态是定义在 Thread 内部的枚举类型。 public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIME ...
分类:
编程语言 时间:
2020-01-19 18:57:00
阅读次数:
88
synchronized、volatile、Lock详解 https://blog.csdn.net/u012102104/article/details/79231159 在Java并发编程过程中,我们难免会遇到synchronized、volatile和lock,其中lock是一个类,而其余两个 ...
分类:
其他好文 时间:
2020-01-19 09:52:49
阅读次数:
81
前言 解决并发编程中的可见性和有序性问题最直接的方法就是禁用CPU缓存和编译器的优化。但是,禁用这两者又会影响程序性能。于是我们要做的是 按需禁用CPU缓存和编译器的优化 。 如何按需禁用CPU缓存和编译器的优化就需要提到 Java内存模型 。Java内存模型是一个复杂的规范。其中最为重要的便是 规 ...
分类:
编程语言 时间:
2020-01-18 16:42:53
阅读次数:
72
环境 jdk version:jdk1.8.0_171 一、Executor接口执行器接口,也是最顶层的抽象核心接口, 分离了任务和任务的执行。 二、ExecutorService接口在Executor的基础上提供了执行器生命周期管理,任务异步执行等功能。在Executor的基础上增强了对任务的控制 ...
分类:
编程语言 时间:
2020-01-18 14:53:28
阅读次数:
107
```java public class SimulateHighConcurrency { public static void run(int num, Consumer action) { Objects.requireNonNull(action); CountDownLatch count... ...
分类:
编程语言 时间:
2020-01-17 09:21:30
阅读次数:
70
1、线程池工作原理 Java线程池主要用于管理线程组及其运行状态。其主要作用是线程复用、线程资源管理、控制操作系统的最大并发数。 Java线程池的工作原理:JVM先根据用户的参数创建一定数量的可运行的线程任务,并将其放入队列中,在线程创建后启动这些任务,如果线程数量超过了最大线程数量,则超出数量的线 ...
分类:
编程语言 时间:
2020-01-16 22:11:42
阅读次数:
77
前言 CPU 、内存、I/O设备之间的速度差距十分大,为了提高CPU的利用率并且平衡它们的速度差异。计算机体系结构、操作系统和编译程序都做出了改进: CPU增加了 缓存 ,用于平衡和内存之间的速度差异。 操作系统增加了 进程、线程 ,以时分复用CPU,进而均衡CPU与I/O设备之间的速度差异。 编译 ...
分类:
编程语言 时间:
2020-01-16 20:36:41
阅读次数:
110
目录 一、原子变量类简介 二、基本类型 三、引用类型 四、数组类型 五、属性更新器类型 参考资料 📦 本文以及示例源码已归档在 javacore 一、原子变量类简介 为何需要原子变量类 保证线程安全是 Java 并发编程必须要解决的重要问题。Java 从原子性、可见性、有序性这三大特性入手,确保多 ...
分类:
编程语言 时间:
2020-01-16 12:59:01
阅读次数:
101
目录 一、J.U.C 简介 二、synchronized 三、volatile 四、CAS 五、ThreadLocal 参考资料 📦 本文以及示例源码已归档在 javacore 一、J.U.C 简介 Java 的 java.util.concurrent 包(简称 J.U.C)中提供了大量并发工具 ...
分类:
编程语言 时间:
2020-01-16 12:48:31
阅读次数:
76
一、ArrayBlockingQueue概述 ArrayBlockingQueue是java并发包下一个以数组实现的阻塞队列,它是线程安全的 public class ArrayBlockingQueue<E> extends AbstractQueue<E> implements Blocking ...
分类:
编程语言 时间:
2020-01-16 00:46:16
阅读次数:
85