摘要: 什么是悲观锁? 悲观锁总是假设最坏的情况,认为共享资源每次被访问的时候就会出现问题(比如共享数据被修改),所以每次在获取资源操作的时候都会上锁,这样其他线程想拿到这个资源就会阻塞直到锁被上一个持有者释放。 像 Java 中synchronized和ReentrantLock等独占锁就是悲观锁思想的实 阅读全文
posted @ 2023-04-19 23:50 壹索007 阅读(26) 评论(0) 推荐(0) 编辑
摘要: volatile关键字:保证变量的可见性;禁止指令重排序 volatile(不稳定的)如何保证变量的可见性: 在 Java 中,volatile 关键字可以保证变量的可见性,如果我们将变量声明为 volatile ,这就指示 JVM,这个变量是共享且不稳定的,每次使用它都到主存中进行读取(也就是标志 阅读全文
posted @ 2023-04-19 22:53 壹索007 阅读(24) 评论(0) 推荐(0) 编辑
摘要: CPU缓存模型: CPU缓存为了解决CPU处理速度和内存处理速度不对等的问题,内存缓存的是硬盘数据用于解决硬盘访问速度过慢的问题。 指令重排序: 为了提升执行速度/性能,系统在执行代码的时候并不一定是按照你写的代码的顺序依次执行。 编译器优化重排 :编译器(包括 JVM、JIT 编译器等)在不改变单 阅读全文
posted @ 2023-04-19 22:31 壹索007 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 1.进程和线程 进程是资源分配和程序运行的基本单位,线程是能够进行运算调度的最小单位。 一个进程中可以并发多个线程,每条线程并行执行不同的任务。 2.进程与线程的关系,区别及优缺点 一个进程中可以有多个线程,多个线程共享进程的堆和方法区 (JDK1.8 之后的元空间)资源,但是每个线程有自己的程序计 阅读全文
posted @ 2023-04-19 16:05 壹索007 阅读(108) 评论(0) 推荐(0) 编辑
摘要: ConcurrentHashMap:线程安全的HashMap 1.7 JDK 1.7 中 的 ConcurrentHashMap 采用了分段锁的设计,只有在同一个分段内才存在竞态关系,不同的分段锁之间没有锁竞争。相比于对整个 Map 加锁,分段锁大大提高了高并发环境下的处理能力。 Concurren 阅读全文
posted @ 2023-04-19 15:58 壹索007 阅读(42) 评论(0) 推荐(0) 编辑
摘要: == 和 equals() 的区别 ·== 对于基本类型和引用类型的作用效果是不同的: 对于基本数据类型来说,== 比较的是值。 对于引用数据类型来说,== 比较的是对象的内存地址。 因为 Java 只有值传递,所以,对于 == 来说,不管是比较基本数据类型,还是引用数据类型的变量,其本质比较的都是 阅读全文
posted @ 2023-04-19 15:34 壹索007 阅读(23) 评论(0) 推荐(0) 编辑