05 2023 档案

摘要:在 Java 中,volatile 是一种关键字,用于修饰变量。**使用 volatile 关键字修饰的变量具有可见性和有序性**,但不保证原子性。 ## 相关定义说明 原子性(Atomicity):即一个操作或者多个操作,要么全部执行,并且执行的过程不会被任何因素打断,要么都不执行。 有序性(Or 阅读全文
posted @ 2023-05-31 08:09 javacn_site 阅读(34) 评论(0) 推荐(0) 编辑
摘要:线程池是一种管理和复用线程资源的机制,它由一个线程池管理器和一组工作线程组成。线程池管理器负责创建和销毁线程池,以及管理线程池中的工作线程。工作线程则负责执行具体的任务。 线程池的主要作用是管理和复用线程资源,避免了线程的频繁创建和销毁所带来的开销。 线程池包含两个重要的组成部分: 1. 线程池大小 阅读全文
posted @ 2023-05-30 08:14 javacn_site 阅读(564) 评论(1) 推荐(2) 编辑
摘要:Java 面试不可能不问线程池,无论是大厂还是小厂。这不,前几天面试阿里时也被问到了这个问题,虽不难,但这里也系统复盘一下。 要搞懂线程池的执行流程,最好的方式是去看它的源码,它的源码如下: ```java public void execute(Runnable command) { if (co 阅读全文
posted @ 2023-05-29 08:23 javacn_site 阅读(194) 评论(0) 推荐(0) 编辑
摘要:线程通讯指的是多个线程之间通过共享内存或消息传递等方式来协调和同步它们的执行。在多线程编程中,通常会出现多个线程需要共同完成某个任务的情况,这时就需要线程之间进行通讯,以保证任务能够顺利地执行。 线程通讯的实现方式主要有以下两种: - 共享内存:多个线程可以访问同一个共享内存区域,通过读取和写入内存 阅读全文
posted @ 2023-05-26 08:25 javacn_site 阅读(877) 评论(0) 推荐(0) 编辑
摘要:众所周知 ConcurrentHashMap 是 HashMap 的多线程版本,HashMap 在并发操作时会有各种问题,比如死循环问题、数据覆盖等问题。而这些问题,只要使用 ConcurrentHashMap 就可以完美解决了,那问题来了,ConcurrentHashMap 是如何保证线程安全的? 阅读全文
posted @ 2023-05-25 08:12 javacn_site 阅读(36) 评论(0) 推荐(0) 编辑
摘要:前几天面试被问懵了,还是关于 HashMap 的面试题,什么是负载因子?为什么是0.75?第一个问题还好回答,然而第二个问题就有点含糊其辞说不清楚了,所以今天就来好好复盘一下这道题。 HashMap 负载因子 load factor,也叫做扩容因子和装载因子,它是 HashMap 在进行扩容时的一个 阅读全文
posted @ 2023-05-24 08:14 javacn_site 阅读(422) 评论(0) 推荐(0) 编辑
摘要:HashMap 死循环发生在 JDK 1.8 之前的版本中,它是指在并发环境下,因为多个线程同时进行 put 操作,导致链表形成环形数据结构,一旦形成环形数据结构,在 get(key) 的时候就会产生死循环。如下图所示: ![image.png](https://cdn.nlark.com/yuqu 阅读全文
posted @ 2023-05-23 08:16 javacn_site 阅读(105) 评论(0) 推荐(1) 编辑
摘要:Java 面试中不可能不问 HashMap,问到 HashMap 就会问到哈希冲突的解决方案,相信很多人也遇到过了,所以这里就详细的总结复盘一下。 哈希冲突是指在哈希表中,两个或多个元素被映射到了同一个位置的情况。 ```java String str1 = "3C"; String str2 = 阅读全文
posted @ 2023-05-22 08:26 javacn_site 阅读(182) 评论(0) 推荐(0) 编辑
摘要:HashMap 在不同的 JDK 版本下的实现是不同的,在 JDK 1.7 时,HashMap 底层是通过数组 + 链表实现的;而在 JDK 1.8 时,HashMap 底层是通过数组 + 链表或红黑树实现的。 具体来说,HashMap 内部维护了一个数组,每个数组元素又是一个链表或者红黑树,每个链 阅读全文
posted @ 2023-05-19 07:46 javacn_site 阅读(95) 评论(0) 推荐(0) 编辑
摘要:在 Java 中,反射是指在运行时检查和操作类、接口、字段、方法等程序结构的能力。通过反射,可以在运行时获取类的信息,创建类的实例,调用类的方法,访问和修改类的字段等。 反射实现 先定义一个需要被反射的类对象 User: public class User { public String name 阅读全文
posted @ 2023-05-18 08:35 javacn_site 阅读(174) 评论(0) 推荐(0) 编辑
摘要:什么是克隆? 在编程中,克隆是指创建一个与原始对象相同的新对象。这个新对象通常具有与原始对象相同的属性和方法,但是它们是两个不同的对象,它们在内存中的位置不同。在 Java 中,可以通过实现 Cloneable 接口和重写 clone() 方法来实现对象的克隆。 什么是浅克隆和深克隆?它们有什么区别 阅读全文
posted @ 2023-05-17 07:27 javacn_site 阅读(300) 评论(0) 推荐(0) 编辑
摘要:在 Java 中,抽象类和接口是两种不同的类类型。它们都不能直接实例化,并且它们都是用来定义一些基本的属性和方法的,但它们有以下几点不同: 定义:定义的关键字不同,抽象类是 abstract,而接口是 interface。 方法:抽象类可以包含抽象方法和具体方法,而接口只能包含方法声明(抽象方法)。 阅读全文
posted @ 2023-05-16 09:56 javacn_site 阅读(98) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示