Java底层原理
王锦春
这个作者很懒,什么都没留下…
展开
-
并发编程之上下文详解
并发编程的一些概念我们知道并发和并行两者表示的含义是不同的:并发:线程间竞争资源,同时只能执行一个并行:线程间不竞争资源,同时可以执行多个,线程互不干扰。有些小伙伴可以不知道什么时候会用到多线程,我们只要记得一句话:当处于cpu浪费或者是需求需要时,适用多线程上下文切换即使是单核处理器也支持多线程执行代码,cpu通过给每个线程分配cpu时间片来实现这个机制(时间片是cpu分配各个线...原创 2019-06-19 14:04:43 · 252 阅读 · 0 评论 -
Java保证共享变量“可见性”的机制
Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM(Java虚拟机),JVM执行字节码,最终转化为汇编指令在cpu上执行,Java中所使用的并发机制依赖于JVM的实现和cpu的指令。在多线程中,有时候会遇到这种问题:当一个线程修改了共享变量时,另一个线程不知道这个变量已经被修改(数据修改不是修改原始数据,而是对拷贝的数据进行修改。)了,还是使用以前的变量(存放在一个缓存中),...原创 2019-06-19 15:04:59 · 612 阅读 · 0 评论 -
快速理解Java单线程和多线程比较
单线程是一个一个线程顺序执行,一个线程只有当前一个线程执行完之后才能执行。这种方法可以会导致当某个线程等待响应的时间特别长时,下一个线程需要一直等待,而这时CPU处于空闲。多线程是一个时间段一个时间段的执行各个线程,每个线程之间切换执行,这就不存在上面说的某个线程处于等待时CPU却是空闲的情况,但多线程也会多出线程切换产生的性能开销。所以当比较单线程和多线程哪个更快时,就是对上面两者之间开销的...原创 2019-07-10 16:43:00 · 2282 阅读 · 0 评论 -
java为什么重写equals时都推荐重写hashCode
很多人在重写equals时,都会看到网上一般推荐同时重写hashCode,为什么呢?一开始我以为equals中比较的是hashCode,查了下源码发现并不是这么回事,那么到底为什么会有这么一个推荐呢?我们先了解一下hashCode的值代表的含义:在Object中hashCode代表的就是对象的存储地址,所有的类都是继承于Object,所以所有的类默认的hashCode值都是它的存储地址;而St...原创 2019-08-26 19:48:42 · 451 阅读 · 0 评论