用户7365393

LV4
发表了文章

那么HashMap什么时候进行扩容呢?

当HashMap中的元素个数超过数组大小*loadFactor时,就会进行数组扩容,loadFactor的默认值为0.75,这是一个折中的取值。也就是说,默认情...

用户7365393
发表了文章

使用stop 等方法实现线程的优先级

方法stop()已经被作废,因为如果强制让线程停止则有可能使一些清理性的工作得不到完成。就象突然关闭计算机电源,而不是按正常程序关机一样,可能会产生不可预料的结...

用户7365393
发表了文章

Java 不支持多继承,通过实现Runnable接口

注意上面的代码中不可以runnable.start(),因为Runnable接口中的唯一方法就是run方法。Thread.java构造函数支持传人一个Runna...

用户7365393
发表了文章

进程和多线程的概念及线程的优点

Thread类实现了 Runnable接口,它们之间具有多态关系。其实,使用继承Thread类的方式创建新线程时,最大的局限就是不支持多继承,因为 Java...

用户7365393
发表了文章

通过threshold字段来判断HashMap的最大容量

HashMap的实现中,通过threshold字段来判断HashMap的最大容量:

用户7365393
发表了文章

table 是一个由 HashEntry 对象组成的数组

用户7365393
发表了文章

ConcurrentHashMap 类实际应用处理

用户7365393
发表了文章

根据 key 计算出对应的 hash 值

注意:这里的加锁操作是针对某个具体的 Segment,锁定的是该 Segment 而不是整个 ConcurrentHashMap。因为插入键 / 值对操作只是...

用户7365393
发表了文章

get的过程中另一个线程恰好新增entry

ConcurrentHashMap完全允许多个读操作并发进行,读操作并不需要加锁。关键是用 HashEntry 对象的不变性来降低读操作对加锁的需求。只是判断获...

用户7365393
发表了文章

get的过程中另一个线程删除一个entry

假设我们的链表元素是:e1-> e2 -> e3 -> e4 我们要删除 e3这个entry   因为HashEntry中next的不可变,所以我们无法直接把...

用户7365393
发表了文章

调用 indexFor(int h, int length) 方法来计算 table 数组的哪个索引处

对于任意给定的对象,只要它的 hashCode() 返回值相同,那么程序调用 hash(int h) 方法所计算得到的 hash 码值总是相同的。我们首先想到...

用户7365393
发表了文章

ddEntry(hash, key, value, i)方法根据计算出的hash值

ddEntry(hash, key, value, i)方法根据计算出的hash值,将key-value对放在数组table的i索引处。addEntry 是 ...

用户7365393
发表了文章

测试HashMap继承的类与实现的接口

可以看出,Entry就是数组中的元素,每个 Map.Entry 其实就是一个key-value对,它持有一个指向下一个元素的引用,这就构成了链表。

用户7365393
发表了文章

Error类异常处理机制

一个方法必须声明所有可能抛出的已检查异常,而未检查异常要么不可控制(Error类),要么就应该避免(RuntimeException 类)。如果方法没有声明所...

用户7365393
发表了文章

Java异常是Java提供的一种识别及响应错误的一致性机制

Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。在有效使用异常的情况下,异常能清晰的回答what, whe...

用户7365393
发表了文章

覆盖Object中的clone方法, 实现深复制

现在为了要在clone对象时进行深复制, 那么就要Clonable接口,覆盖并实现clone方法,除了调用父类中的clone方法得到新的对象, 还要将该类中的引...

用户7365393
发表了文章

使用stop 等方法实现线程的优先级

方法stop()已经被作废,因为如果强制让线程停止则有可能使一些清理性的工作得不到完成。就象突然关闭计算机电源,而不是按正常程序关机一样,可能会产生不可预料的结...

用户7365393
发表了文章

nterrupt+标志位中MyThread.java做更改测试

用户7365393
发表了文章

interrupt+抛出异常测试

建议使用“抛异常”的方法来实现线程的停止,因为在catch块中可以对异常的信息进行相关的处理,而且使用异常流能更好、更方便的控制程序的运行流程,不至于代码中出现...

用户7365393
发表了文章

调用interrupt()方法仅仅是在当前线程中打了一个停止的标记,并不是真的停止线程

调用interrupt()方法仅仅是在当前线程中打了一个停止的标记,并不是真的停止线程 首先看一个例子:

用户7365393

个人简介

个人成就

扫码关注云+社区

领取腾讯云代金券