![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA基础
文章平均质量分 80
-姜小鱼
这个作者很懒,什么都没留下…
展开
-
HashMap和Hashtable的比较
HashMap和Hashtable的比较是Java面试中的常见问题,用来考验程序员是否能够正确使用集合类以及是否可以随机应变使用多种思路解决问题。HashMap的工作原理、ArrayList与Vector的比较以及这个问题是有关Java 集合框架的最经典的问题。Hashtable是个过时的集合类,存在于Java API中很久了。在Java 4中被重写了,实现了Map接口,所以自此以后也成了Java转载 2016-08-18 14:19:36 · 372 阅读 · 0 评论 -
fail-fast 机制
在JDK的Collection中我们时常会看到类似于这样的话: 例如,ArrayList: 注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentModificationException。因此,为提高这类迭代器的正确性而编写一个依赖于此异常的程序是错误的做法:迭代器转载 2016-08-18 16:06:40 · 373 阅读 · 0 评论 -
Java并发编程:Callable、Future和FutureTask
Java并发编程:Callable、Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,转载 2016-08-26 15:11:54 · 751 阅读 · 0 评论 -
JVM内存区域
JVM主要将将内存划分为:虚拟机栈、方法区、本地方法栈、堆、程序计数器 程序计数器:线程私有。记录当前线程要执行下一条的指令。由于在JVM中,多线程通过切换来轮流获得CPU的执行时间,在任意时刻,CPU只会执行任一线程中的一条指令,因此每个线程都需要有一个独立的程序计数器来记录,使得线程在切换回来后可以继续顺序执行。 JVM中规定,如果线程中执行 的是非Native方法原创 2016-11-01 00:26:59 · 947 阅读 · 1 评论 -
Java中对象的初始化顺序
初始化分为两个阶段,类的初始化和类实例(对象)的初始化 类的初始化阶段:静态变量的声明初始化和静态初始化块被执行 类实例初始化阶段:实例变量的声明初始化和非静态初始化先被执行,然后是构造方法的执行。原创 2016-11-07 09:40:45 · 412 阅读 · 0 评论