关闭
当前搜索:

深入理解Java虚拟机-Java内存模型与线程(12)

深入理解Java虚拟机 学习笔记 第十二章 java内存模型与线程 在许多情况下,让计算机同时去做几件事情,不仅是因为计算机的运算能力强大了,还有一个很重要的原因是计算机的运算速度与它的存储和通信子系统速度的差距太大,大量的时间都花费在磁盘I/O、网络通信或者数据库访问上。   12.2 硬件的效率与一致性 由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统...
阅读(37) 评论(0)

深入理解Java虚拟机-虚拟机字节码执行引擎(八)

虚拟机字节码执行引擎     在不同的虚拟机实现里面,执行引擎在执行Java代码的时候可能会有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择[1],也可能两者兼备,甚至还可能会包含几个不同级别的编译器执行引擎。但从外观上看起来,所有的Java虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。     8.2运行是的...
阅读(50) 评论(0)

深入理解Java虚拟机-垃圾收集器与内存分配策略(三)

深入理解Java虚拟机第二版学习笔记。 垃圾收集器与内存分配策略        第二章java内存运行时区域的各个部分,启动程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出有条不紊的执行着出栈和入栈操作。每一个栈帧中分配多少内存基本是类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收的问题,因为方法结束或线...
阅读(45) 评论(0)

深入理解Java虚拟机-Java内存区域与内存溢出异常(二)

第二章 Java内存区域与内存溢出异常 2.2 运行时数据区域        Java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干不同的数据区域。 2.2.1 程序计数器        程序计数器(program Counter Register)是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。字节码解释器工作时是通过改变这个计数...
阅读(31) 评论(0)

Java RandomAccessFile用法

转:http://blog.csdn.net/akon_vm/article/details/7429245 Java RandomAccessFile用法 内存映射文件 MappedByteBuffer                                RandomAccessFile RandomA...
阅读(56) 评论(0)

Java Lambda表达式入门

虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。本人建议不要乱用,因为这就和某些很高级的黑客写的代码一样,简洁,难懂,难以调试,维护人员想骂娘.) Lambda表达式是Java SE 8中一个重要的新特性。...
阅读(39) 评论(0)

深入理解Java虚拟机第二版学习笔记(一)

深入理解Java虚拟机第二版学习笔记。 第一章,       走进Java。 1.2 Java技术体系 Sun官方定义的Java技术体系包括以下几个组成部分: Java程序设计语言; 各种硬件平台上的Java虚拟机; Class文件格式; Java API类库; 来自商业机构和开源社区的第三方Java类库。   通常把Java程序设计语言、Java虚拟机、Java API类库这...
阅读(40) 评论(0)

用Happen-Before规则,分析单例模式-懒汉式写法

转自: http://www.iteye.com/topic/260515   编写Java多线程程序一直以来都是一件十分困难的事,多线程程序的bug很难测试,DCL(Double Check Lock)就是一个典型,因此对多线程安全的理论分析就显得十分重要,当然这决不是说对多线程程序的测试就是不必要的。传统上,对多线程程序的分析是通过分析操作之间可能的执行先后顺序,然而程序执行顺序十分复杂,...
阅读(108) 评论(0)

java同步中的ReentrantLock和synchronized

转自 ->点击打开链接 https://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html 多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言...
阅读(91) 评论(0)

Java并发编程:volatile关键字解析

转自:http://www.cnblogs.com/dolphin0520/p/3920373.html Java并发编程:volatile关键字解析    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。   vo...
阅读(73) 评论(0)

编码问题,unicode,string

转:http://blog.csdn.net/z69183787/article/details/25742307   unicode编码简而言之就是将每一个字符用16位2进制数标识。但是通常都用4位的16进制数标识。  例如:  1)中文字符串"你好"的unicode码为:\u60\u597d;  2)英文字符串"ab"的unicode码为:\u0061\u0062;  其中\u是标...
阅读(59) 评论(0)

callable,Executor,Future

转:http://blog.csdn.net/zhangzhaokun/article/details/6615454   在再度温习Java5的并发编程的知识点时发现,首要的就是把Runnable、Callable、Executor、Future等的关系搞明白,遂有了下述小测试程序,通过这个例子上述三者的关系就一目了然了。 在java5以后,一个可以调度执行的线程单元可以有三种方式定义: ...
阅读(60) 评论(0)

Callable Feature

转:http://blog.csdn.net/ghsau/article/details/7451464    接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。        Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功...
阅读(64) 评论(0)

Java Thread.join()详解

http://www.open-open.com/lib/view/open1371741636171.html   一、使用方式。 join是Thread类的一个方法,启动线程后直接调用,例如: Thread t = new AThread(); t.start(); t.join(); 二、为什么要用join()方法 在很多情况下,主线程生成并起动了子线程,如果子线程里要进行...
阅读(80) 评论(0)

创建普通内部类对象与创建嵌套类对象的不同

为什么需要使用内部类? 使用内部类的原因:每个内部类都能独立的继承自一个(接口的)实现,所以无论外部类是否已经继承了某个(接口的)的实现,对内部类都没有影响。实际上内部类有效的实现了“多重继承”,就是说,内部类允许继承多个非接口类型。我们知道内部类自动拥有对外部类所有成员的访问权,那么这是如何做到的吗?当某个外部类对象创建了一个内部类对象时,此内部类对象必定会秘密的捕获一个指向那个外部类对象的引用...
阅读(1121) 评论(0)
    个人资料
    • 访问:35689次
    • 积分:1711
    • 等级:
    • 排名:千里之外
    • 原创:132篇
    • 转载:38篇
    • 译文:0篇
    • 评论:9条
    最新评论