[读书笔记]Java之动态分派】的更多相关文章

以下内容来自周志明的<深入理解Java虚拟机>. 前一篇说了静态分派和重载有关,现在的动态分派就和覆盖Override有关了. 先看代码: public class DynamicDispatch { static abstract class Human { protected abstract void sayHello(); } static class Man extends Human { @Override protected void sayHello() { System.ou…
以下内容来自周志明的<深入理解Java虚拟机>. 静态分派和重载有关. 先看代码: public static void main(String[] args) { SuperClass sc = new SubClass(); SuperClass superClass = new SuperClass(); test(sc); test(superClass); test((SubClass)sc); } public static void test(SuperClass sc) { S…
<深入了解java虚拟机>高效并发读书笔记--Java内存模型,线程,线程安全 与锁优化 本文主要参考<深入了解java虚拟机>高效并发章节 关于锁升级,偏向锁,轻量级锁参考<Java并发编程的艺术> 关于线程安全和线程安全的程度参考了<Java并发编程实战> 图片参考https://www.processon.com/u/5dee0443e4b093b9f775065c#pc 一丶Java内存模型 1.概述 多任务处理已经是操作系统的必备技能,计算机被要求…
ps:有时间好好整理下格式.从别的编辑器拷贝过来啥都没了. ~~~~~~~~~~~~~~· 2.java程序设计环境 JDK 开发java使用的软件: JRE 运行java使用的软件: SE 用于桌面或简单服务器应用的java平台--废弃 EE 用于复杂服务器应用的java平台--通用. ME 手机或其他小型设备的java平台--废弃 库源文件和文档: src.zip---包含了所有公共类库的源代码. JDK目录结构: bin 编译器和工具, demo演示, docs 类库文档,include…
第二章:Java内存区域和内存溢出异常 2.2运行时数据区域 运行时数据区分为方法区,堆,虚拟机栈,本地方法栈,程序计数器 方法区和堆是线程共享的区域 虚拟机栈,本地方法栈,程序计数器是数据隔离的数据区 2.2.,程序计数器,即PC,本质是一块较小的内存区域.可以看做当前线程所执行的字节码的行号指令器 有了它可以实现字节码指令,分支,循环.跳转.异常处理,线程恢复 每个线程有一个单独的PC,各个线程之间不互相影响,独立存储 如果执行的方法是java方法,计数器记录的是正在执行的虚拟机字节码指令的…
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! Java的封装性很好,拿访问控制符来讲,没有权限的类或方法是不能访问的.如public,都可访问:private,只有本类中方法可访问:protected位于两者之间,位于本包中对象可访问. 组合和继承都允许在新的类中放置子对象,组合是显式的,继承是隐示的.final的含义:常量数值则永不改变,对象引用则引用永不改变,但Java未提供任何对象永不改变的方法.所有private方法都隐式的指定为fi…
一. 类的生命周期 类从被载入到虚拟机内存中開始,到卸载出内存为止,有下面(如图)的生命周期: 以上"载入->验证->准备->解析->初始化"称为类的载入过程. Java虚拟机规范中没有对什么时候须要開始类载入的第一阶段进行强制约束,而是交给了虚拟机依据详细实现来自由把握. 可是对于初始化阶段,虚拟机有下面5种必须对类立即进行"初始化"的情况: (1)遇到new.getstatic.putstatic或invokestatic这4条字节码指令…
Graal VM: Run Programs Faster Anywhere. 跨语言全栈虚拟机,可以作为"任何语言"的运行平台使用. Java内存结构 程序计数器:线程私有,较小的内存空间.可以看作是当前线程所执行的字节码的行号指示器.在概念模型里,字节码解释器工作时就是通过改变这个计数器来选取下一条需要执行的字节码指令.因为java虚拟机的多线程时通过线程轮流切换.分配处理器执行时间来实现的,所以为了线程切换之后能恢复,每条线程都需要一个独立的程序计数器.如果线程执行的是一个jav…
以下内容大多来自周志明的<深入理解Java虚拟机>. 当一个变量被volatile修饰后,它将具备两种特性: 1. 保证此变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的.而普通变量不能做到这一点,普通变量的值在线程间传递均需要通过主内容来完成,例如,线程A修改了一个普通变量的值,然后向主内容进行回写,另外一条线程B在线程A回写完成之后再从主内存进行读取操作,新变量值才会对线程B可见. volatile变量在各个线程的工作内存中不存…
以下内容大多来自周志明的<深入理解Java虚拟机>. 类加载器是java的一项创新,也是java流行的重要原因之一,它最初是为了满足java applet的需求而开发出来. 什么是applet? 作为新手,都不知道applet是什么鬼,看看百度百科的解释,应该就明白了: JavaApplet就是用Java语言编写的小应用程序,可以直接嵌入到网页中,并能够产生特殊的效果. 所以Applet就目前来看 我们用不到了,但是类加载器却在类层次划分.OSGI.热部署.代码加密等领域大放异彩,成为了JAV…