Java
文章平均质量分 91
Wuv1Up
这个作者很懒,什么都没留下…
展开
-
彻底理解Java对象头
文章目录对象头介绍对象头详细结构 -- 32位虚拟机Normal StateBiased StateLightweight StateHeavyweight State对象头详细结构 -- 64位虚拟机写在最后的话对象头介绍Java每个对象都包含两个部分, 对象头(Object Header)和对象体(Object Body). 对象头中存储代表该对象运行时的一些信息, 这部分信息与对象体的内容没有关系.对象头被分为两个部分, 第一个部分是Mark Word, 代表标记信息, 例如hash code,原创 2020-05-19 21:15:26 · 939 阅读 · 0 评论 -
系统线程和Java线程的状态
文章目录学会线程状态转换能做什么?常说的线程Java线程学会线程状态转换能做什么?Java体系和计算机系统联系起来定位问题有理论支持常说的线程进程是操作系统分配资源的最小单位, 线程是操作系统调度的最小单位. 一个进程可以包含多个线程, 所以进程和线程的关系就是1 : N. 线程需要由具体的操作系统提供支持(比如Windows, Linux, MacOSX), 并且提供相应的系统调用给用户进程调用.用户进程调用创建线程的系统调用, 发生用户态到内核态的变化.上面所说的线程叫做轻量级进程原创 2020-05-18 20:24:17 · 219 阅读 · 0 评论 -
happens-before规则和示例
文章目录写在前面的话简述深入理解写在前面的话理解happens-before的关键在于理解Java的内存模型. 关于Java内存的模型可以简单理解为下图.每个线程都有自己的一片小区域用于当前的操作, 因此用到的变量会从主存拷贝到本地内存, 每个线程在自己的本地内存中操作变量, 而主存保留的还是最原始没有修改的数据, 因此多个线程对同一份数据进行操作时, 就会发生意向不到的结果.简述happens-before共有8个规则程序次序规则: 在一个线程中, 按照程序代码顺序,书写在前面的操作先行发原创 2020-05-17 01:02:05 · 334 阅读 · 0 评论 -
Java虚拟机总结, 面试前快问快答
文章目录代码运行原理Java内存模型对象分配对象结构和定位对象判断对象是否存活收集算法收集器代码运行原理Java源代码编译成字节码. 字节码是二进制文件, 用户不能直接查看, 若想查看需要使用javap 命令反编译文件. java命令启动Java虚拟机开始将给定的字节码解释给操作系统. 综上来说, java是编译型+解释型语言.Java内存模型虚拟机栈, 本地方法栈,程序计数器 三者线...原创 2020-05-12 19:10:55 · 307 阅读 · 0 评论 -
剖析ThreadPoolExecutor
文章目录基本使用体系结构核心组件核心组件互相协助基本使用ThreadPoolExecutor主要提供两种能力线程缓存: 执行大量异步任务时通过缓存一定数量的线程减少线程切换,提供较好的性能.资源管理: 当执行任务时, 提供有限的资源供执行任务使用, 并且提供基本的统计结果.在了解基本API之前, 需要了解它的几个构造参数的含义.参数类型参数含义corePool...原创 2020-05-03 03:01:19 · 418 阅读 · 0 评论 -
剖析AQS后,决定手写一个可重入锁
文章目录基本概念介绍结束语基本概念介绍可重入锁, 表示同一个线程可重复对某个资源进行上锁. 同时它也是独占锁, 表示任一时刻当且仅当最多有一个线程占用.下面自己写个不可重入锁举例.// 在Java中, 可以很好的设计一种不可重入锁.class NonReentrantLock { private volatile boolean isLock; priva...原创 2020-04-26 13:46:20 · 249 阅读 · 0 评论 -
干货! Semaphore详解,非常深入
文章目录Semaphore - 信号量Semaphore获取锁流程acquire 方法doAcquireSharedInterruptibly 方法获取锁流程总结Semaphore释放锁流程releaseShared 方法tryReleaseShared 方法doReleaseShared 方法释放锁总结图解Semaphore结束语Semaphore - 信号量Semaphore在构造的时候,...原创 2020-04-22 21:14:30 · 2283 阅读 · 0 评论 -
通过CounDownLatch的源码,来了解AQS的共享锁
文章目录CountDownLatch获取共享锁acquireShared方法doAcquireShared方法释放共享锁releaseShared方法doReleaseShared方法深入CountDownLatch结束语点击了解AbstractQueuedSynchronizerCountDownLatchCountDownLatch的使用很简单, 构造CountDownLatch时需要传...原创 2020-04-20 19:33:53 · 123 阅读 · 0 评论 -
通过源码了解AQS
文章目录AQS介绍双向链表介绍获取独占锁acquire方法acquireQueued方法shouldParkAfterFailedAcquire方法释放独占锁release方法unparkSuccessor方法独占锁内部状态图解总结AQS介绍AbstractQueuedSynchronizer,简称AQS, 提供了一种实现同步器的框架. 该框架提供可以阻塞的加锁和释放锁. 其底层依赖FIFO双...原创 2020-04-18 17:47:49 · 323 阅读 · 0 评论 -
关于LockSupport,你应该知道这些
文章目录初步了解了解代码park 一类APIunpark 一类API使用示例分析lock方法分析unlock方法总结提示: 关于 interrupt 你应该了解这些.若不了解 interrupt 可以点击查看了解.初步了解LockSupport的功能是使线程进行"驻留", 也就是让线程停止工作. 线程暂停的状态如下:BLOCKEDWAITINGTIMED_WAITING但是...原创 2020-04-16 15:00:01 · 208 阅读 · 0 评论 -
SpringBoot自定义解密
SpringBoot自定义解密文章目录SpringBoot自定义解密背景难点解决思路理解加载Bean原理创建用户自定义的Bean背景SpringBoot中使用Redis组件, 但是Redis设置了密码, 而明文密码不允许出现在配置文件中, 并且需要将明文按照公司的规定加密,最后使用时再按照公司的要求解密.难点SpringBoot无法自动解密用户配置的密文. 需要使用第三方加密, 比如大名...原创 2020-03-24 11:31:35 · 317 阅读 · 0 评论 -
进程(Process)控制
进程(Process)的控制文章目录进程(Process)的控制背景进程(Process)的属性实例代码kill命令发送信号信号解析kill命令使用自定义处理信号背景在阅读<<深入理解计算机系统>>第八章中,为了更好的理解知识, 于是做了如下小实验.进程(Process)的属性每个进程都有特属自己的id,称为pid(process id). 同时每个进程都属于一个...原创 2020-03-10 19:10:31 · 252 阅读 · 0 评论 -
Java ClassPath详解
Java ClassPath文章目录Java ClassPath前提概括指定ClassPath环境变量方式命令方式两种方式共存深入剖析CLASSPATH参考前提在类Linux环境下实验. 本文环境是Centos和Mac OSX. 一切命令都是在shell脚本提交,命令行同理.概括ClassPath就是Java应用程序在运行中,用于从ClassPath指定的位置加载Class文件和其他资源...原创 2019-10-22 15:51:32 · 179 阅读 · 0 评论 -
Maven针对不同环境编译
Maven针对不同环境编译文章目录Maven针对不同环境编译背景Maven ProfileProfile的编写Profile激活默认激活通过-P激活通过系统属性激活通过文件存在是否激活通过操作系统激活通过setting.xml文件背景假如某程序运行在不同的环境下,每个环境下的Zookeeper集群的IP不一致,因此要根据环境来编译程序.Maven ProfileMaven为了针对不同环境...原创 2019-09-27 11:47:18 · 765 阅读 · 0 评论 -
3分钟了解interrupt
合理中断线程文章目录合理中断线程合理中断被调用线程处于阻塞状态被调用线程处于正常运行interrupted()和isInterrupt()的区别源码解析合理中断在Thread类中,提供了stop(),suspend()和resume()方法,这三个方法分别是用来结束,暂停,恢复线程. 但是都已经被标记为@Deprecated废弃了. 因为一个线程不应该由其他线程来结束,他应该收到别人的通知,...原创 2019-05-16 23:16:49 · 194 阅读 · 0 评论