死锁 两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去. 为什么会产生死锁: ① 因为系统资源不足. ② 进程运行推进的顺序不合适.    ③ 资源分配不当. 产生死锁的条件有四个: ① 互斥条件:所谓互斥就是进程在某一时间内独占资源. ② 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放. ③ 不剥夺条件:进程已获得资源,在末使用完之前,不能强行剥夺. ④ 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系.…
进程与线程 首先来看百度百科关于进程的介绍: 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动.它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体.它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示. 直观一点: windows的任务管理里面,我们看到的eclipse和360等等,都是进程.(想深入了解的可以看看计算机操作系统) 什么是线程? 线程是在一个进程独立运行的子任务.线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥…
锁的概念 从jdk发行1.5版本之后,在原来synchronize的基础上,增加了重入锁ReentrantLock. 本文就不介绍synchronize了,有兴趣的同学可以去了解一下,本文重点介绍ReentrantLock和ReentrantReadWriteLock. 锁是什么? 并发编程的时候,比如说有一个业务是读写操作,那多个线程执行这个业务就会造成已经写入的数据又写一遍,就会造成数据错乱. 所以需要引入锁,进行数据同步,强制使得该业务执行的时候只有一个线程在执行,从而保证不会插入多条重复…
Java高并发秒杀API之业务分析与DAO层 Java高并发秒杀API之Service层 Java高并发秒杀API之web层 Java高并发秒杀API之高并发优化 除了并发部分外的这个web开发的总结:https://www.imooc.com/video/11737 springmvc运行流程 BOOTSTRAP 和 JS 的使用技巧.(模块化.不混乱.抽取字典方便修改) JQ插件(countDown && cookie 等) 高并发部分: java读取内存需要10纳秒,1秒等于1亿纳秒…
这是java高并发系列第22篇文章,文章基于jdk1.8环境. 本文主要内容 基本介绍. 通过反射获取Unsafe实例 Unsafe中的CAS操作 Unsafe中原子操作相关方法介绍 Unsafe中线程调度相关方法 park和unpark示例 Unsafe锁示例 Unsafe中保证变量的可见性 Unsafe中Class相关方法 示例:staticFieldOffset.staticFieldBase.staticFieldBase 示例:shouldBeInitialized.ensureCla…
Java高并发系列--检视阅读 参考 java高并发系列 liaoxuefeng Java教程 CompletableFuture AQS原理没讲,需要找资料补充. JUC中常见的集合原来没讲,比如ConcurrentHashMap最常用的,后面的都很泛,没有深入,虎头蛇尾. 阻塞队列讲得不够深入. 并发概念词 同步(Synchronous)和异步(Asynchronous) 同步和异步通常来形容一次方法调用,同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为.异步方法调用更…
[实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象引用:AtomicStampedReference [实战Java高并发程序设计 4]数组也能无锁:AtomicIntegerArray [实战Java高并发程序设计 5]让普通变量也享受原子操作 我们已经比较完整得介绍了有关无锁的概念和使用方法.相对于有锁的方法,使用无锁的方式编程更加考验一个程序…
Java高并发--原子性可见性有序性 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 原子性:指一个操作不可中断,一个线程一旦开始,直到执行完成都不会被其他线程干扰.换句话说原子性保证了任何时刻只有一个线程在对共享变量进行操作. 可见性:指当一个线程修改了某个共享变量的值,其他线程是否能立即知道这个修改. 有序性:一个线程观察其他线程中的指令,由于指令重排序的存在,该观察结果一般杂乱无序 原子性 AtomicInteger JDK的atomic包下提供了许多"原子…
Java高并发 -- 并发扩展 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 死锁 死锁是指两个或两个以上的事务在执行过程中,因争夺锁资源而造成的一种互相等待的现象,若无外力作用两个事务都无法推进,这样就产生了死锁.死锁的四个必要条件: 互斥条件:即任何时刻,一个资源只能被一个进程使用.其他进程必须等待. 请求和保持条件:即当资源请求者在请求其他的资源的同时保持对原有资源的占有且不释放. 不剥夺条件:资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放…
Java高并发--AQS 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 AQS是AbstractQueuedSynchronizer的简称,直译过来是抽象队列同步器.AQS的底层数据结构是队列,如下所示 AQS使用Node实现FIFO队列,可以用于构建锁或者其他同步装置的基础框架,利用一个int类型表示状态(state) 使用该框架的功能需要让子类继承,并重写相关方法. 子类通过继承并通过重写方法管理其状态acquire和release的方法操纵状态 可以同时实现排他锁和…