Java基础面试专栏
文章平均质量分 72
Gary_Tam
专注于分享Java各类学习笔记、面试题,赋能每一位Java学习者的知识探索之旅。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
以为自己已经很快了 —— 聊聊AtomicLong
大家好,我是徒手敲代码。之前在聊过,多线程环境下对共享变量进行修改操作,如果不想加锁,可以用 CAS,采用自旋的方式来避免加锁带来严重的性能损耗。Java 当中针对 CAS 的思想,设计了几个原子类,其中就包括AtomicLong这个类最常见的应用场景,包括计数器、序列生成器,以及需要在高并发环境下进行原子性更新长整型变量的场景。例如,在分布式系统中,它常被用来实现全局唯一ID的生成,或是统计服务的请求数量、成功响应次数等指标,确保在多线程或多进程访问时数据的准确性和一致性。原创 2024-06-06 16:31:10 · 439 阅读 · 0 评论 -
原来这叫读写锁 —— ReentrantReadWriteLock
大家好,我是徒手敲代码。今天来介绍一下包下的顾名思义,它是读写锁的一种,同一时间,读操作可以有多个线程,但是写操作只能有一个线程,并且读和写不能同时进行;读锁被占用,那么写锁就不能获取,反过来也一样。之前学过的互斥锁,比如,在任何时候都只允许一个线程访问共享资源,这在读操作远多于写操作的场景下,显得效率很低,因为即使多个读操作之间并不冲突,它们也必须排队等待。的诞生,正好可以解决这个问题。它通过分离读锁和写锁,使得并发读成为可能。下面通过阅读源码的方式,来看看大佬是如何设计这个读写锁的。原创 2024-06-01 17:28:33 · 364 阅读 · 0 评论 -
既然选择了吞吐量,谈何公平 —— ReentrantLock
大家好,我是徒手敲代码。今天来介绍一下 ReentrantLock它属于包下的一个类,是一种可重入的互斥锁,允许同一个线程多次获取同一把锁而不会导致死锁。与相比,ReentrantLock 允许尝试非阻塞地获取锁、支持锁的超时获取以及在等待锁时可被中断。另外,ReentrantLock 可以通过构造函数参数指定锁的获取是否公平,而总是采用非公平策略。需要注意,Reentrantlock 不会像那样,在出现异常或者线程结束时自动释放锁,所以我们需要在finaly块中手动 释放锁,以避免发生死锁。原创 2024-05-31 16:33:02 · 411 阅读 · 0 评论 -
区区死锁,何足挂齿
在程序执行的过程中,两个或以上的线程,因争夺有限资源而彼此陷入等待,没有人愿意先作出让步,进而导致所有相关线程都无法继续推进。举个例子,教室里的两个人,A 和 B,A 手上拿着两支笔,B 手上拿着两张试卷。每个人都必须同时拥有笔和试卷,才能写作业。但是双方都不肯先让步,A 要求 B 先给出试卷,而 B 要求 A 先给出笔,那么最后的结果,只能是两个人一直互相消耗。原创 2024-05-30 20:40:21 · 353 阅读 · 0 评论 -
小小字符串竟然如此嚣张 —— 聊聊 Java 的 String
大家好,我是徒手敲代码。今天来分享几个 String 在面试当中,比较常见的问题。这个东西用得最多,而且底层的原理,面试也经常问。原创 2024-05-25 15:56:40 · 519 阅读 · 0 评论 -
私人地方,禁止闯入!—— ThreadLocal
通俗一点,假设商场的客人就是一个个的线程,那么放在储物柜的东西,就是每个线程各自的资源。它允许每个线程拥有各自独立的变量副本,即使变量名相同,不同线程之间的变量值也不会相互影响。多线程环境下,帮助每个线程维持独有的任务执行环境,或者上下文信息,比如用户会话、事务 id 等等。既然是每个线程都保存一份,那么如果线程数一旦多了起来,或者保存的数据占用空间很大,而且用完之后没有及时释放,肯定会造成严重的。内存泄漏主要是因为用完的对象没有被及时地进行垃圾回收,那么我们在使用它的过程中,一旦这个。原创 2024-05-21 21:06:07 · 213 阅读 · 0 评论 -
加锁过于残暴?不妨试试CAS
大家好,我是徒手敲代码。今天来介绍一下CAS。这个东西的全名是 Compare and Swap,比较并交换。在修改数据之前,先比较指定内存位置上的值,看是否相等,如果相等,就用新的值替换旧值,如果不相等,那么就直接返回。原创 2024-05-20 16:46:08 · 366 阅读 · 0 评论 -
HashMap的十个连环追问,阁下又该如何应对?
介绍一下HashMap在面试中最常考的十道题原创 2024-04-11 09:08:28 · 1041 阅读 · 1 评论 -
Java反射,这么来理解!
介绍一下反射原创 2024-04-10 15:02:33 · 357 阅读 · 1 评论 -
Java异常,最通俗的理解!
大家好,我是徒手敲代码。今天分享面试中,常见的几个异常问题。在看面试题之前,首先要问问自己,究竟什么是异常,怎么理解异常呢?从字面上看,异常就是的意思。如何定义不正常呢?做饭之前,买好了苦瓜,买好了牛肉,本来想做个番茄炒蛋。结果家里停电停水,天意弄人。像这些意外情况,让我们无法继续把做饭这个动作进行下去,只能停下来,解决了停电停水这个问题,才能继续,这就是异常。回到编码上,当我们运行Java程序的时候,JVM会按照字节码,一行一行地运行下去,注意不一定按照我们写的顺序来的喔(这和万恶的编译器有关)。原创 2024-04-10 15:00:28 · 1027 阅读 · 1 评论 -
看懂这些Java基础,面试妥妥的
分享几个Java的基础面试题原创 2024-04-10 14:57:21 · 653 阅读 · 1 评论
分享