![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA并发
文章平均质量分 64
JAVA并发学习
jiqiren1994
基本所有文章都是总结性质得文章,将网上大部分博主的内容整合了一下,加入了部分自己的理解,方便自己工作时查阅资料用,好处就是不用忘记了去搜各种文章。
展开
-
阻塞非阻塞与同步异步
五种IO模型详解5种IO模型分别是阻塞IO模型、非阻塞IO模型、IO复用模型、信号驱动的IO模型、异步IO模型1. 什么是IOIO (Input/Output,输入/输出)即数据的读取(接收)或写入(发送)操作,通常用户进程中的一个完整IO分为两阶段:用户进程空间<–>内核空间、内核空间<–>设备空间(磁盘、网络等)。IO有内存IO、网络IO和磁盘IO三种,通常我们说的IO指的是后两者。网络I/O就是通过网络进行数据的拉取和输出。磁盘I/O主要是对磁盘进行读写工作。LINU原创 2020-12-12 14:25:15 · 85 阅读 · 0 评论 -
java 重复请求的问题
一、问题描述用户在短时间内重复提交请求,后台接收到相同的请求。造成的影响:如果存在添加的动作,上一个添加未完成,重复的添加请求又进行了执行,导致数据库存在重复的数据。如果存在更改的动作,更改提交后,下个工序进行了修改,这个时候重复的更改请求执行,导致下个工序的操作失效。二、问题分析这个问题可以说是个典型的竞态问题,符合check then act的境况。简单来说就是先查询存在不存在,然后再进行添加;或者先读取状态,然后再更改状态,但是状态已经被修改了导致出问题。因为涉及到数据库,数据库也有事原创 2021-05-30 12:52:12 · 1423 阅读 · 0 评论 -
内存屏障总结
原创 2021-04-26 12:39:18 · 63 阅读 · 0 评论 -
java 并发理论
一、进程、线程与任务进程是程序运行的实例。运行一个java程序的实质是启动一个Java虚拟机进程,也就是说一个运行的Java程序就是一个Java虚拟机进程。进程是程序向操作系统申请资源的基本单位。线程是进程中可独立执行的最小单位。一个进程可以包含多个线程。同一个进程中的所有线程共享该进程中的资源,如内存空间、文件句柄等。线程所要完成的计算就被称为任务,特定的线程总是在执行着特定的任务。二、串行、并发与并行在单个处理器上采用单核依次执行多个任务,前一个小任务没完成不能操作下一个即为串行。在单个处理原创 2021-05-29 23:46:53 · 191 阅读 · 0 评论 -
并发编程与jvm总结
一、什么是CAS1.1 悲观锁与乐观锁对于悲观锁,认为数据发生并发冲突的概率很大,读操作之前就上锁。synchronized关键字,ReentrantLock都是悲观锁的典型。对于乐观锁,认为数据发生并发冲突的概率比较小,读操作之前不上锁。等到写操作的时候,再判断数据在此期间是否被其他线程修改了。如果被其他线程修改了,就把数据重新读出来,重复该过程;如果没有被修改,就写回去。判断数据是否被修改,同时写回新值,这两个操作要合成一个原子操作,也就是CAS ( Compare And Set )。Atom原创 2021-04-30 23:30:01 · 210 阅读 · 1 评论 -
java 内存模型学习
一、并发问题二、JVM内存结构三、重排序四、JVM类初始化原创 2021-07-11 11:33:58 · 104 阅读 · 0 评论 -
JMM内存模型学习
一、什么是JMM内存模型可以理解为在特定的操作协议下,对特定的内存或者高速缓存进行读写访问的过程抽象描述,不同架构下的物理机拥有不一样的内存模型,Java虚拟机是一个实现了跨平台的虚拟系统,因此它也有自己的内存模型,即Java内存模型(Java Memory Model, JMM)。Java Memory Model(Java内存模型), 围绕着在并发过程中如何处理可见性、原子性、有序性这三个特性而建立的模型。二、 JMM结构下图为x86架构下CPU缓存的布局,即在一个CPU 4核下,L1、L2、L原创 2021-05-16 11:34:12 · 159 阅读 · 1 评论 -
java 线程池学习
ThreadPoolExecutor执行流程图原创 2021-05-19 19:44:56 · 65 阅读 · 0 评论 -
happen-before
什么是happen-beforeJMM可以通过happens-before关系向程序员提供跨线程的内存可见性保证(如果A线程的写操作a与B线程的读操作b之间存在happens-before关系,尽管a操作和b操作在不同的线程中执行,但JMM向程序员保证a操作将对b操作可见)。具体的定义为:1)如果一个操作happens-before另一个操作,那么第一个操作的执行结果将对第二个操作可见,而且第一个操作的执行顺序排在第二个操作之前。2)两个操作之间存在happens-before关系,并不意味着Jav原创 2021-04-26 13:29:44 · 79 阅读 · 0 评论 -
java 并发学习
独占锁模型共享锁模型原创 2021-05-20 21:33:51 · 235 阅读 · 3 评论