![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java并发编程
文章平均质量分 71
兴涛
春风化雨,森林拔地而起!
展开
-
Java并发系列:自定义线程池
代码】Java并发系列:自定义线程池。原创 2022-08-03 18:45:14 · 419 阅读 · 0 评论 -
Java并发系列:LockSupport
LockSupport是java.util.concurrent.locks包下的一个类线程等待/通知机制中有三种方法实现:wait()和notify()方法特点:原创 2022-06-29 23:00:05 · 293 阅读 · 0 评论 -
Java并发系列:中断机制
大白话就是,中断机制是一种协商,不会立刻给你停掉。并且协商中断后,后序具体怎么做需要你自己指定。在java.lang.Thread类包下,线程中断机制主要有三种方法:如何中断一个线程?——在什么场景下使用上述方法也就是说这三个方法的特性是什么:1、通过一个volatile变量具体得:T1线程和T2线程共享一个volatile变量,当T2想要T1停止时,对这个volatile变量进行修改,当T1读取后进行中断。符合中断机制理论中协商思想:应由线程自己决定是否中断。2、AtomicBoolean实现原原创 2022-06-28 22:35:53 · 248 阅读 · 0 评论 -
Java并发系列:CAS操作
CAS和JUC下的原子类关系十分密切,在本篇博客中可能需要一些原子类的知识。在多线程环境下,i++语句是线程不安全的。我们可以使用synchronized关键字保证线程安全,但是synchronized有一些缺陷:锁太重,影响系统的性能。在使用原子类后,即可解决上述存在的问题,即保证原子性,又不需要加重锁。Java中JUC下原子类的应用,底层就是CAS这种思想来保证。说白了就是:在开发中使用JUC中的原子类,原子类是由CAS保证,Unsafe类实现了CAS思想。CAS是靠硬件实现,在硬件层面提升效率原创 2022-06-14 12:06:56 · 506 阅读 · 0 评论 -
内存屏障中的读写屏障——并发问题
内存屏障中的读写屏障——并发问题一、并发问题1、概述2、Volatile通过读写屏障保证可见性和有序性2.1、保证可见性2.2、保证有序性读写屏障涉及到JVM和并发编程的知识,但是其概念又相差较多,容易混淆一、并发问题1、概述Volatile的底层实现原理就是内存屏障2、Volatile通过读写屏障保证可见性和有序性2.1、保证可见性声明写屏障后,写屏障之前的代码都会同步到主存当中,保证之后的线程读到的都是最新的;2.2、保证有序性但是Volatile无法解决指令交错:原创 2022-02-28 13:05:06 · 1660 阅读 · 0 评论 -
一文解决内存屏障
内存屏障是硬件之上、操作系统或JVM之下,对并发作出的最后一层支持。再向下是是硬件提供的支持;向上是操作系统或JVM对内存屏障作出的各种封装。内存屏障是一种标准,各厂商可能采用不同的实现。本文仅为了帮助理解JVM提供的并发机制。首先,从volatile的语义引出可见性与重排序问题;接下来,阐述问题的产生原理,了解为什么需要内存屏障;然后,浅谈内存屏障的标准、厂商对内存屏障的支持,并以volatile为例讨论内存屏障如何解决这些问题;最后,补充介绍JVM在内存屏障之上作出的几个封装。为了帮助理解,会简要讨论转载 2022-02-28 15:01:36 · 281 阅读 · 0 评论 -
Java并发系列:JMM
我们讨论线程安全,是在多个线程之间存在共享数据访问为前提,在多线程下代码执行的结果与预期正确的结果不一致,该代码就是线程不安全的,否则则是线程安全的。在中看到的定义。原文如下:当多个线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替运行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获取正确的结果,那这个对象是线程安全的。关于定义的理解这是一个仁者见仁智者见智的事情。出现线程安全的问题一般是因为主内存和工作内存数据不一致......原创 2022-06-13 21:13:24 · 180 阅读 · 0 评论 -
Java并发系列:详解Synchronized关键字
为了提高效率,出现了多线程并发执行,并发执行处理共享变量就会带来安全性问题。那么,在java关键字synchronized就具有使每个线程依次排队操作共享变量的功能。很显然,这种同步机制效率很低,但synchronized是其他并发容器实现的基础,对它的理解也会大大提升对并发编程的感觉。Java中每个对象都有他的对象头,并且synchronized用的锁是存在对象头中的。1、Java并发编程的艺术 方腾飞等著;2、黑马JUC编程;............原创 2022-06-05 20:17:10 · 323 阅读 · 0 评论 -
Java并发编程系列:详解volatile关键字
在整个并发知识体系(不断扩充)下,本文主要讨论的内容:volatile可以说是java虚拟机提供的最轻量级的同步机制,因为它不会引起线程上下文的调度和切换,执行成本比synchronized低。Java内存模型(JMM)告诉我们,各个线程会将共享变量从主内存中拷贝到工作内存,然后执行引擎会基于工作内存中的数据进行操作处理。线程在工作内存进行操作后何时会写到主内存中?这个时机对普通变量是没有规定的,而针对volatile修饰的变量给java虚拟机特殊的约定,线程对volatile变量的修改会立刻被其他线程所原创 2022-06-05 17:42:05 · 186 阅读 · 0 评论