摘要: CAS(Compare and Swap)是一种轻量级的同步操作,也是乐观锁的一种实现,它用于实现多线程环境下的并发算法。CAS 操作包含三个操作数:内存位置(或者说是一个变量的引用)、预期的值和新值。如果内存位置的值和预期值相等,那么处理器会自动将该位置的值更新为新值,否则不进行任何操作。 在多线 阅读全文
posted @ 2023-06-07 07:43 javacn_site 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程),互相持有对方所需的资源,导致它们都无法向前推进,从而导致永久阻塞的问题就是死锁。 比如线程 1 拥有了锁 A 的情况下试图获取锁 B,而线程 2 又在拥有了锁 B 的情况下试图获取锁 A,这样双方就进入相互阻塞等待的情况, 阅读全文
posted @ 2023-06-06 08:14 javacn_site 阅读(38) 评论(0) 推荐(0) 编辑
摘要: synchronized 和 Lock 都是 Java 中用于实现线程同步的机制,它们都可以保证线程安全。 ## synchronized 介绍与使用 synchronized 可用来修饰普通方法、静态方法和代码块,当一个线程访问一个被 synchronized 修饰的方法或者代码块时,会自动获取该 阅读全文
posted @ 2023-06-05 08:17 javacn_site 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 单例模式的实现方法有很多种,如饿汉模式、懒汉模式、静态内部类和枚举等,当面试官问到“为什么双重效验锁要加volatile?”时,那么他指的是为什么懒汉模式中的私有变量要加 volatile? > 懒汉模式指的是对象的创建是懒加载的方式,并不是在程序启动时就创建对象,而是第一次被真正使用时才创建对象。 阅读全文
posted @ 2023-06-01 08:31 javacn_site 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 在 Java 中,volatile 是一种关键字,用于修饰变量。**使用 volatile 关键字修饰的变量具有可见性和有序性**,但不保证原子性。 ## 相关定义说明 原子性(Atomicity):即一个操作或者多个操作,要么全部执行,并且执行的过程不会被任何因素打断,要么都不执行。 有序性(Or 阅读全文
posted @ 2023-05-31 08:09 javacn_site 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 线程池是一种管理和复用线程资源的机制,它由一个线程池管理器和一组工作线程组成。线程池管理器负责创建和销毁线程池,以及管理线程池中的工作线程。工作线程则负责执行具体的任务。 线程池的主要作用是管理和复用线程资源,避免了线程的频繁创建和销毁所带来的开销。 线程池包含两个重要的组成部分: 1. 线程池大小 阅读全文
posted @ 2023-05-30 08:14 javacn_site 阅读(552) 评论(1) 推荐(2) 编辑
摘要: Java 面试不可能不问线程池,无论是大厂还是小厂。这不,前几天面试阿里时也被问到了这个问题,虽不难,但这里也系统复盘一下。 要搞懂线程池的执行流程,最好的方式是去看它的源码,它的源码如下: ```java public void execute(Runnable command) { if (co 阅读全文
posted @ 2023-05-29 08:23 javacn_site 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 线程通讯指的是多个线程之间通过共享内存或消息传递等方式来协调和同步它们的执行。在多线程编程中,通常会出现多个线程需要共同完成某个任务的情况,这时就需要线程之间进行通讯,以保证任务能够顺利地执行。 线程通讯的实现方式主要有以下两种: - 共享内存:多个线程可以访问同一个共享内存区域,通过读取和写入内存 阅读全文
posted @ 2023-05-26 08:25 javacn_site 阅读(847) 评论(0) 推荐(0) 编辑
摘要: 众所周知 ConcurrentHashMap 是 HashMap 的多线程版本,HashMap 在并发操作时会有各种问题,比如死循环问题、数据覆盖等问题。而这些问题,只要使用 ConcurrentHashMap 就可以完美解决了,那问题来了,ConcurrentHashMap 是如何保证线程安全的? 阅读全文
posted @ 2023-05-25 08:12 javacn_site 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 前几天面试被问懵了,还是关于 HashMap 的面试题,什么是负载因子?为什么是0.75?第一个问题还好回答,然而第二个问题就有点含糊其辞说不清楚了,所以今天就来好好复盘一下这道题。 HashMap 负载因子 load factor,也叫做扩容因子和装载因子,它是 HashMap 在进行扩容时的一个 阅读全文
posted @ 2023-05-24 08:14 javacn_site 阅读(326) 评论(0) 推荐(0) 编辑