java基础
文章平均质量分 74
milly125
热爱工作,热爱生活!!
展开
-
HashMap、HashSet和Hashtable的区别
hashmap实现原理浅析 看了下JAVA里面有HashMap、Hashtable、HashSet三种hash集合的实现源码,这里总结下,理解错误的地方还望指正 HashMap和Hashtable的区别 HashSet和HashMap、Hashtable的区别 HashMap和Hashtable的实现原理 HashMap的简化实现MyHashMap HashM转载 2016-05-17 18:16:00 · 422 阅读 · 0 评论 -
HashMap的实现原理
HashMap是一个Entry数组实现的,本质上是一个数组,数组中的每一个位置上存放的都是Entry实体。 1.HashMap的基本构成: transient Entry[] table = (Entry[]) EMPTY_TABLE; // HashMap的基本构成Entry数组 对应的Entry类的结构://HashMap的内部类,jdk8中使用的是Node类 static原创 2016-05-17 17:57:27 · 260 阅读 · 0 评论 -
BlockingQueue
在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。 认识BlockingQueue 阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所起的作转载 2016-03-28 10:16:04 · 204 阅读 · 0 评论 -
java并发库 Lock 公平锁和非公平锁
jdk1.5并发包中ReentrantLock的创建可以指定构造函数的boolean类型来得到公平锁或非公平锁,关于两者区别,java并发编程实践里面有解释 公平锁: Threads acquire a fair lock in the order in which they requested it 非公平锁:a nonfair lock permits barging: threa转载 2016-03-28 10:08:29 · 259 阅读 · 0 评论 -
ThreadPoolExecutor使用
线程池 0.常用构造方法 ----------------------- new ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, RejectedExecutionHandler hand转载 2016-03-24 22:08:30 · 216 阅读 · 0 评论 -
HashMap的扩容
HashMap是基于哈希表的Map接口的实现,允许使用null值和null键。首先我们要先了解什么是哈希表。 哈希表(Hash table,也称为散列表),是根据关键码值(key,value)而直接进行访问的数据结构。也就是说,它通过关键码值映射到表中一个位置来访问记录,以加快查找的 速度。这个映射函数就是散列函数(也加hash函数),存放记录的数组叫做散列表。 HashMap原创 2016-01-26 14:25:41 · 746 阅读 · 0 评论 -
ConcurrentHashMap线程安全的实现
ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。在这之前我对ConcurrentHashMap只有一些肤浅的理解,仅知道它采用了多个锁,大概也足够了。但是在经过一次惨痛的面试经历之后,我觉得必须深入研究它的实现。面试中被问到读是否要加锁,因为读写会发生冲突,我说必须要加锁,我和面试官也因此发生了冲突,结果可想而知。还是闲话少说,通过仔细阅读源代码转载 2016-01-26 11:34:18 · 2629 阅读 · 0 评论 -
jvm - 内存结构,GC
1.jvm的生命周期(1) JVM在它的生存周期中有一个明确的任务,那就是运行Java程序。因此当Java程序启动的时候,就产生JVM的一个实例;当程序运行结束的时候,该实例也跟着消失了(2) Java虚拟机总是开始于一个main()方法,这个方法必须是公有、返回void、直接受一个字符串数组。 在程序执行时,你必须给Java虚拟机指明这个包含main()方法的类名。(可以在pom文件打包...原创 2018-02-26 20:37:08 · 256 阅读 · 0 评论 -
jvm - 查看运行时的情况
1.查看应用程序分配的内存情况ps -ef | grep java应用程序名称-Xms 和 -Xmx 分别代表分配JVM的最小内存和最大内存。2.查看gc情况(1) jstat -gc 12538 5000-- 说明:12538 进程号 5000打印间隔时长(单位:ms)(2) jstat -gcutil 29727 1s-- 说明:12538 进程号 1s打印间隔时长显示内容说明:S0...原创 2018-02-26 20:38:36 · 974 阅读 · 0 评论