摘要:
线程安全:当多个线程访问一个对象时,如果不同考虑这些线程在运行时环境下的调度和替换执行,也不需要进行额外的同步,或者在调用方法进行任何其他的协调操作,调用 这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。线程安全的实现方法:互斥同步:synchronized关键字 monitorenter monitorexit字节码指令,在执行monitore... 阅读全文
摘要:
Java内存模型(Java Memory Model,JMM):主内存与工作内存:Java内存模型主要是定义程序中各个变量的访问规则。Java内存模型规定了所有的变量都存储在主内存(Main Memory)中,每条线程还有自己的工作内存(Working Memory),线程的工作内存保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存中的变量... 阅读全文
摘要:
运行时栈帧结构栈帧(Stack Frame):是用于支持虚拟机进行方法调用和方法执行的数据结构,他是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一个方法从调用开始至执行完成的过程,都对应着一个栈帧从虚拟机栈里面从入栈到出栈的过程。方法调用:不同于方法执行,一切方法调用在Class文件里... 阅读全文
摘要:
虚拟机类加载机制:把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。在Java语言中,类型的加载、连接、初始化过程都是在程序运行期间完成的,并为其带来了高度灵活性,动态加载。类加载的时机:类的生命周期:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolvtion)、初始化... 阅读全文