04 2019 档案
并发编程(五)AQS
摘要:1.CLH队列锁 CLH队列锁即Craig, Landin, and Hagersten (CLH) locks。 CLH队列锁本身也是一种基于链表的可扩展,高性能,公平的自旋锁,申请线程仅仅在本地变量上自旋,它不断轮询前驱的状态,假设发现前驱释放了锁就结束自旋。 当一个线程需要获取锁时,会创建一个
并发编程(四)显示锁
摘要:1.显示锁 Java程序可以依靠synchronized关键字隐式的获取锁实现锁功能,但是它将锁的获取和释放固话了,也就是先获取再释放。 (synchronized是语言的特性(内置锁),Lock是一个类 使用的时候需要对其实例化 和方法调用,内存,CPU消耗较大。且JDK中对synchonized
Java中的几种代码块
摘要:静态代码块: 有些代码需要在项目启动的时候就执行,就需要使用静态代码块。它是主动执行的,在项目启动的时候就初始化,也仅仅在第一次类加载的时候执行,之后不再执行 静态方法: 有些代码是在不创建对象的情况下,由其他程序来调用的,就需要使用静态方法。它是被动执行的,静态方法在类加载的时候就已经加载了,可以
并发编程(三)原子操作CAS
摘要:1.CAS(Compare And Swap)原子操作: 假定有两个操作A和B,如果从执行A的线程来看,当另一个线程执行B时,要么将B全部执行完,要么完全不执行B,那么A和B对彼此来说是原子的。 通过锁,锁机制可以实现原子操作,但锁一般是阻塞的如synchronize关键字就是基于阻塞的锁机制,当一
数据结构(一) 线性表与链表
摘要:数据项:一个数据元素可以有若干数据项组成 数据对象:有想相同性质的数据元素的集合,是数据的子集 数据结构:相互之间存在一种或多种特定关系的数据元素的集合 逻辑结构:数据对象中数据元素之间的相互关系 1)集合结构 2)线性结构 3)树形结构 4)图形结构 物理结构:数据的逻辑结构在计算机中的存储形式
并发编程(二)线程并发工具类
摘要:1.Fork-Join 1.1 分而治之的设计思想: 将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。 分治策略: 对于一个规模为n的问题,若该问题可以解决,则直接解决,否则将其分解为K个模块较小的子问题,这些子问题相互独立且与原问题形式相同(子问题相互之间有管理就
并发编程(一)线程基础,线程之间的共享协作
摘要:1.基础概念 1.1 什么是进程和线程 进程是程序运行资源分配的最小单位。 其中资源包括:CPU、内存空间、磁盘IO等,同一进程中的多条线程共享该进程中的全部系统资源,而进程和进程之间是相互独立的。进程可以分为系统进程和用户进程。用于完成操作系统的各种功能的进程就是系统进程,他们就是处于运行状态下的