Java基础
文章平均质量分 93
程序猿阿星
4年经验的Java程序猿,热爱技术,喜欢研究底层原理,有志同道合的猿类可以找我一起交流讨论~
公众号 : 「程序猿阿星」,欢迎关注
展开
-
图解Java线程状态转换
大家好,我是阿星,好久不见,欢迎来到Java并发编程系列番外篇线程状态转换,内容通俗易懂,请放心食用。线程状态先来个开场四连问Java线程状态有几个?Java线程状态是如何转换?Java线程状态转换什么情况会进入锁的等待队列?Java线程状态转换什么情况会进入锁的同步队列?一提到Java线程状态,不少读者立马想到线程状态转换图,但细想,印象又不深刻,只记得有那么几个状态。再要你说出Java线程状态是如何转换的,脑子里可能就如下图一样,已经是一团浆糊了。别慌,阿星为了帮原创 2021-06-17 08:11:49 · 639 阅读 · 0 评论 -
Java类加载器:坑爹是我的特色
大家好,我是头发还很多的阿星今天的主角是「在日常开发中,存在感非常低的类加载器」,众所周知大佬除了头发比较少,还非常低调,如果想和大佬交朋友,那一定要先认识大佬,下面阿星来带大家认识一下类加载器(本文不涉及源码)。什么是类加载器我们平时写了那么多的Java代码,却不知Java类的加载过程,岂不是很尴尬,为了打破尴尬,阿星得从Java类说起。我们编写的Java类也就是.java文件,通过Java编译器编译成.class文件,.class文件中保存着Java代码转换后的虚拟机指令。当程序使用某个Java类时,J原创 2021-05-08 12:06:17 · 661 阅读 · 9 评论 -
Java日志的心路历程
大家好,我是头发还很多的阿星今天来和大家聊聊Java日志体系,Java日志体系可以说是五花八门,眼花缭乱。导致很小多伙伴因为日志标准库之间复杂的关系而感到烦恼,不知道统一系统的日志标准库需要依赖哪些jar包,百度一下所谓的博客,照着人家复制,却无法弄懂原理,甚至还有搞了半天项目因jar冲突跑不起来的,心态直接爆炸。咳咳,淡定淡定,别慌,阿星带你们弄懂其中的原理,只要你静下心,跟着本文来,再给个一键三连,你就能随心所欲的更改日志标准库,统一日志输出。发展史我们要正确的配置好日志,让jar相互生效原创 2021-04-30 21:47:14 · 460 阅读 · 4 评论 -
趣谈ReentrantLock,看完直呼通俗易懂
前言自己开的坑,跪着也要填完,欢迎来到Java并发编程系列第五篇ReentrantLock,文章风格依然是图文并茂,通俗易懂,本文带读者们深入理解ReentrantLock设计思想。如果读过阿星写的前篇万字长文 | 16张图解开AbstractQueuedSynchronizer,本篇的效果拉满,未读过也没关系,依然能get到ReentrantLock原理。认识下ReentrantLock阿星先带读者们和ReentrantLock见个面,简单的认识下什么是ReentrantLock。Reentra原创 2021-04-22 14:06:28 · 8852 阅读 · 28 评论 -
深入理解AbstractQueuedSynchronizer只需15张图
前言Java并发编程系列第四篇AbstractQueuedSynchronizer,文章风格依然是图文并茂,通俗易懂,本文带读者们深入理解AbstractQueuedSynchronizer设计思想。内容大纲基础AbstractQueuedSynchronizer抽象同步队列简称A Q S,它是实现同步器的基础组件,如常用的ReentrantLock、Semaphore、CountDownLatch等。A Q S定义了一套多线程访问共享资源的同步模板,解决了实现同步器时涉及的大量细节问题,能够极原创 2021-04-16 12:51:29 · 2552 阅读 · 11 评论 -
写给小白看的LockSupport
前言Java并发编程系列第三篇LockSupport,上一篇Synchronized文章中有提过,不推荐读者们使用Object的wait、notify、notifyAll等函数做多线程间的通信协同,使用LockSupport会是更好的选择,本篇就来谈谈LockSupport,也正好为下篇的A Q S(AbstractQueuedSynchronized)打基础。内容大纲LockSupport基本概念LockSupport是线程工具类,主要作用是阻塞和唤醒线程,底层实现依赖Unsafe,同时它还是锁原创 2021-04-06 13:11:09 · 771 阅读 · 7 评论 -
BAT面试多线程最常问的一个问题:谈谈你对Synchronized的理解?
前言Java并发编程系列第二篇Synchronized,文章风格依然是图文并茂,通俗易懂,本文带读者们由浅入深理解Synchronized,让读者们也能与面试官疯狂对线。在并发编程中Synchronized一直都是元老级的角色,Jdk 1.6以前大家都称呼它为重量级锁,相对于J U C包提供的Lock,它会显得笨重,不过随着Jdk 1.6对Synchronized进行各种优化后,Synchronized性能已经非常快了。内容大纲Synchronized使用方式Synchronized是Java提原创 2021-03-26 12:51:33 · 3626 阅读 · 11 评论 -
由浅入深CAS原理,小白也能与BAT面试官对线
前言Java并发编程系列番外篇C A S(Compare and swap),文章风格依然是图文并茂,通俗易懂,让读者们也能与面试官疯狂对线。C A S作为并发编程必不可少的基础知识,面试时C A S也是个高频考点,所以说C A S是必知必会,本文将带读者们深入理解C A S。大纲C A S基本概念C A S(compareAndSwap)也叫比较交换,是一种无锁原子算法,映射到操作系统就是一条cmpxchg硬件汇编指令(保证原子性),其作用是让C P U将内存值更新为新值,但是有个条件,内存值原创 2021-03-20 20:49:34 · 663 阅读 · 2 评论 -
小白也能看懂的Java内存模型
前言Java并发编程系列开坑了,Java并发编程可以说是中高级研发工程师的必备素养,也是中高级岗位面试必问的问题,本系列就是为了带读者们系统的一步一步击破Java并发编程各个难点,打破屏障,在面试中所向披靡,拿到心仪的offer,Java并发编程系列文章依然采用图文并茂的风格,让小白也能秒懂。Java内存模型(Java Memory Model)简称J M M,作为Java并发编程系列的开篇,它是Java并发编程的基础知识,理解它能让你更好的明白线程安全到底是怎么一回事。内容大纲硬件内存模型程序原创 2021-03-09 14:28:39 · 2355 阅读 · 15 评论 -
一文通关苦涩难懂的Java泛型
前言相信大家对Java泛型并不陌生,无论是开源框架还是JDK源码都能看到它,毫不夸张的说,泛型是通用设计上必不可少的元素,所以真正理解与正确使用泛型,是一门必修课,本文将解开大家对泛型的疑惑,并通过大量实践,让你get到泛型正确的使用姿势,下面开始进入正题吧!大纲基础因为本文重实践,而且面对的是Java开发人员群体,大家对泛型都有基础,所以泛型基础这块会快速过,帮助大家回忆下即可,后面主要的则重点是通配符编译期与运行期编译期是指把源码交给编译器编译成计算机可执行文件的过程,运行期是指把编译后的原创 2021-02-19 18:24:57 · 513 阅读 · 0 评论