摘要:
本文转载自聊聊内存屏障 #导语 在之前文章聊聊JMM,说到了内存屏障,内存屏障在Java语言实现一致性内存模型上起到了重要的作用,本文我们一起聊一聊内存屏障 内存屏障是什么 在cpu执行指令的过程中,对于同一个线程中没有数据依赖的指令可以重新排序优化,有数据依赖的指令按照顺序串行执行,来保证单线程程 阅读全文
摘要:
本文转载自Java volatile 关键字底层实现原理解析 导语 在Java多线程并发编程中,volatile关键词扮演着重要角色,它是轻量级的synchronized,在多处理器开发中保证了共享变量的**“可见性”**。“可见性”的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的 阅读全文
摘要:
本文转载自volatile关键字?MESI协议?指令重排?内存屏障?这都是啥玩意 摘要 三级缓存,MESI缓存一致性协议,指令重排,内存屏障,JMM,volatile。单拿一个出来,想必大家对这些概念应该有一定了解。但是这些东西有什么必然的联系,或者他们之间究竟有什么前世今生想必是困扰大家的一个问题 阅读全文
摘要:
本文转载自聊聊缓存一致性协议 什么缓存一致问题 在谈缓存一致性协议之前我们先了解一下缓存一致性问题是什么,它是怎么出现的。 现在处理器处理能力上要远胜于主内存(DRAM),主内存执行一次内存读写操作,所需的时间可能足够处理器执行上百条的指令,为了弥补处理器与主内存处理能力之间的鸿沟,引入了高速缓(C 阅读全文
摘要:
本文转载自JVM杂谈之JIT 导语 JIT技术是JVM中最重要的核心模块之一。我的课程里本来没有计划这一篇,但因为不断有朋友问起,Java到底是怎么运行的?既然Hotspot是C写的,那Java是不是可以说运行在C之上呢?为了澄清这些概念,我才想起来了加了这样一篇文章,算做番外篇吧。 Just In 阅读全文
摘要:
本文转载自java 泛型详解 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。 什么是泛型?为什么要使用泛型? 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体 阅读全文
摘要:
本文转载自Java中的逆变与协变 导语 看下面一段代码 Number num = new Integer(1); ArrayList<Number> list = new ArrayList<Integer>(); //type mismatch List<? extends Number> lis 阅读全文
摘要:
本文转载自疯狂的String 导语 在java中字符串是我们比较常用的一个类型,字符串是不可变的,类被声明为final , 存储字符的char[] value数据也被声明为final ,我们对String真的了解么?我们看一下String是有多么的疯狂。本文中是在JDK8下面测试,不同的JDK可能会 阅读全文
摘要:
本文转载自java中synchronized与Lock的异同 前言 synchronized和Lock通过互斥保障原子性,能够保护共享数据以实现线程安全,其作用包括保障原子性、可见性、有序性 常见问题 在平时聊天或者面试过程中,可能会被问到,既然已经有了synchronized了,为什么JSR166 阅读全文
摘要:
本文转载自不使用的大对象为什么要手动设置null,真的有效吗? 导语 在我们开发过程中,对于大的对象使用过后,为了help gc ,我们会手动将大对象置为null,背后的原理是什么,是不是最佳的实践。 案例一 首先我们先看一段代码 package com.bk.exercise.stack; /** 阅读全文
摘要:
本文转载自不使用反射如何调用某个实例对象的方法 导语 如何调用一个对象的方法?我们可以通过实例化对象直接调用、使用反射机制、通过代理对象等,本文介绍一种新的方法MethodHandle,这种方法在开发中很少会用到,但使用起来感觉很顺手。 什么是MethodHandle? MethodHandle是J 阅读全文