摘要: 【概述】 乐观锁采用的是一种无锁的思想,总是假设最好的情况,认为一个事务在读取数据的时候,不会有别的事务对数据进行修改,只需要在修改数据的时候判断原数据数据是否已经被修改了。JDK 中 java.util.concurrent.atomic 包下提供的原子类就是基于乐观锁的思想实现的,具体的实现主要 阅读全文
posted @ 2019-06-28 14:36 米突小搞羊 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 【概述】 锁的分类根据不同的维度可以分为以下几种: 悲观锁和乐观锁 共享锁(S锁,读锁)和排他锁(X锁,写锁) 公平锁和非公平锁 重入锁 分段锁 【悲观锁和乐观锁】 悲观锁和乐观锁是两种处理并发冲突的思路,不是指锁的具体实现。 悲观锁总是假设会发生最坏的情况,认为一个事务每次读取数据时,别的事务总会 阅读全文
posted @ 2019-06-27 08:15 米突小搞羊 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 【概述】 Java 虚拟机规范中试图定义 Java 内存模型(Java Momery Model, JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各个平台下都能达到一致的内存访问效果。 【主内存与工作内存】 Java 内存模型的主要目标是定义程序中各个变量的访问规则,即 阅读全文
posted @ 2019-06-25 14:02 米突小搞羊 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 【概述】 高效并发是从 JDK1.5 到 JDK 1.6 的一个重要改进,HotSpot 虚拟机开发团队在这个版本上花费了大量的精力去实现各种锁优化技术,如适应性自旋(Adaptive Spining)、锁消除(Lock Elimination)、锁粗化(Lock Coarsening)、轻量级锁( 阅读全文
posted @ 2019-06-20 11:11 米突小搞羊 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 【概述】 JVM 通过 synchronized 关键字提供锁,用于在线程同步中保证线程安全。 【synchronized 实现原理】 synchronized 可以用于代码块或者方法中,产生同步代码区域,也叫互斥区。互斥区每次只能允许一个线程进入执行同步代码或重新进入执行剩余同步代码(参考线程进入 阅读全文
posted @ 2019-06-19 11:32 米突小搞羊 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 【概述】 1). java.lang.Thread 类中定义了一个枚举 State, 定义了线程的六种状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED 2). 通过 getState() 方法可以获取当前线程的状态 【详细描述】 NEW 阅读全文
posted @ 2019-06-16 11:33 米突小搞羊 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 【概述】 与数据库连接管理类似,线程的创建和销毁会耗费较大的开销,使用 “池化技术” 来更好地利用当前线程资源,减少因线程创建和销毁带来的开销,这就是线程池产生的原因。 【无限创建线程的不足】 在生产环境中,若没有线程池,则需要采用的是 “为每个任务创建一个线程” 的方法,当出现大量的请求时需要创建 阅读全文
posted @ 2019-06-14 09:18 米突小搞羊 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 【概述】 多线程的创建常用的有两种方法:1). 继承 Thread 类; 2). 实现 Runnable 接口; 3). 实现 Callable 接口。 【继承 Thread 类】 【实现 Runnable 接口】 【实现 Callable 接口】 【区别】 1. Java 对于类是单继承,继承 T 阅读全文
posted @ 2019-06-12 11:56 米突小搞羊 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 【概述】 首先需要了解对象在内存中的存储布局,其次需要了解对对象的访问定位。 【对象的内存布局】 在 HotSpot 虚拟机中,对象在内存中存储的布局可以分为 3 块区域:对象头(Header)、实例数据(Instance Data)和 对齐填充(Padding)。 HotSpot 虚拟机的对象头包 阅读全文
posted @ 2019-06-10 16:10 米突小搞羊 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 【概述】 阅读全文
posted @ 2019-06-08 06:39 米突小搞羊 阅读(130) 评论(0) 推荐(0) 编辑