07 2020 档案
HashMap 和 ConcurrentHashMap 的区别
摘要:线程安全性不同, HashMap 是线程不安全的, ConcurrentHashMap 是线程安全的. ConcurrentHashMap 采用锁分段技术, 将整个 Hash 桶进行了分段 segment, 也就是将这个大的数组分成了几个小的片段 segment, 而且每个 segment 片段上面
阅读全文
HashMap 和 HashTable 的区别
摘要:继承的父类不同, 但都实现了 Map 接口. 线程安全性不同, HashMap 线程不安全, HashTable 线程安全. key 和 value 是否能存 null, 虽然这两个在设计上都不允许存空值, 但 HashTable 编译时期就会报错, 而 HashMap 则在运行时才会抛出异常 Nu
阅读全文
ArrayList 和 LinkedList 的区别
摘要:线程安全: ArrayList 和 LinkedList 都是线程不安全的, 它们的方法之间都是不同步的. 底层数据结构: ArrayList 底层是使用 Object 数组; LinkedList 底层是使用双向链表数据结构. 快速访问随机元素: ArrayList 支持高效的快速访问随机元素,
阅读全文
ArrayList 和 Vector 的区别
摘要:这两个类都继承了 List 接口(List 继承了 Collection接口), 它们都是有序集合, 存储的元素可以重复. 安全性: ArrayList 是线程不安全的, 它的方法之间是线程不同步的, 但效率较高. Vector 是线程安全的, 它的方法之间是线程同步的. 扩容机制: ArrayLi
阅读全文
List, Set, Map 的区别
摘要:List: list 接口存储一组不唯一的, 有序的对象. Set: 不允许有重复元素的集合, 是无序的. Map: 使用键值对存储数据, key 是唯一的, 而 value 可以重复, 使用 key 来搜索效率极高.
阅读全文
sleep() 和 wait() 的共同点和区别
摘要:#####共同点: 两者都可以暂停线程的执行. ####区别: 最主要的区别是 sleep() 没有释放锁, 而 wait() 释放了锁. wait() 常被用于线程间的交互和通讯, 而 sleep() 则通常被用于暂停执行. wait() 被调用后, 线程不会自动苏醒, 需要其他线程调用同一对象上
阅读全文
什么是线程死锁?如何避免线程死锁?
摘要:####线程死锁 多个线程同时被阻塞, 它们中的一个或全部都在等待某个资源被释放. 由于线程被无限期的阻塞, 导致程序不可能被正常终止. 就像上图一样, 线程A持有资源2, 线程B持有资源1, 它们同时都想申请对方的资源, 所以这两个线程就会互相等待而进入死锁状态. 产生死锁必须具备四个条件: 互斥
阅读全文
&和&&, |和||的区别
摘要:&和&&的含义一样, 表示逻辑与(and), 只有第一个表达式和第二个表达式都为 true 时, 整个运算结果才为 true. |和||的含义一样, 表示逻辑或(or), 当第一个表达式和第二个表达式其中有一个为 true 时, 整个运算结果就为 true. &&和||还具备短路功能, 就是当第一个
阅读全文
Java 深拷贝和浅拷贝
摘要:###浅拷贝 对于基本数据类型的成员对象, 浅拷贝是将属性值赋值给新的对象, 所以其中一个修改, 不会影响另外一个. 对于引用数据类型的成员对象, 浅拷贝只是将成员对象的内存地址指向了同一个, 这时改变其中一个的属性值, 另外一个也会跟着改变. ###深拷贝 在拷贝引用数据类型的成员对象时, 会开辟
阅读全文
final 关键字修饰类,方法,变量有什么作用?
摘要:类 被 final 修饰的类不能被继承, final 类中的所有成员方法都会被隐式的指定为 final 方法. 方法 把方法锁定, 不让子类去修改方法的实现. 提高效率, 早期的 Java 实现版本中会将 final 方法转为内嵌调用, 而现在的 Java 版本已经不需要使用 final 进行优化了
阅读全文
浙公网安备 33010602011771号