首页
热门分类
IT工具箱
GitHub
无敌收藏
关于
AI聊天
IT充电站
看过故人终场戏,淡抹最适宜
累计撰写
48
篇文章
累计创建
13
个标签
累计收到
2
条评论
栏目
首页
热门分类
IT工具箱
GitHub
无敌收藏
关于
AI聊天
目 录
CONTENT
最新文章
线程start/run/wait/sleep/notify/notifyAll的区别
1. start() 作用:启动一个线程。当调用一个线程的 start() 方法时,线程会被创建并开始执行其 run() 方法。 使用场景:当你需要启动一个新的线程时使用。 2. run() 作用:run() 方法是 Runnable 接口的一部分,它定义了线程执行的具体任务。在 Thread 类中
2024-05-23
7
0
0
Java基础
创建线程的5种方式
1. 继承 Thread 类 通过创建一个新的类继承 Thread 类,并重写其 run() 方法来定义线程执行的任务。 public class MyThread extends Thread { @Override public void run() { Syst
2024-05-23
10
0
0
Java基础
线程的几种状态和流转
状态 New:新建了一个线程,未调用start方法 Runnable:调用start方法后,待运行或运行中 Blocked:线程阻塞等待获取锁 Waiting:线程等待,需要等待唤醒或中断 Time_waiting:超时等待,指定时间后自行返回变为Runnable Terminated:线程执行完毕
2024-05-23
4
0
0
Java基础
synchronized和ReentrantLock
前言 两者都是用于线程的安全同步控制 两者都是可重入锁 区别 synchronized是java内置关键字,而ReentrantLock是代码封装实现 synchronized可以自动获取/释放锁,而ReentrantLock需要手动获取/释放锁 ReentrantLock可以获取超时锁,响应
2024-05-22
8
0
0
Java基础
hashmap的循环引用和解决
循环引用 JDK1.8之前hashmap的元素插入操作为 头插法 。即原有元素为1 -> 2 -> 3时,当发生扩容后,将元素插入链表的头部,即变成 3 -> 2 -> 1 。 这种操作在多线程并发扩容操作时,会导致产生循环引用 JDK1.8解决方案 1.8之后,从头插法改为了尾插法
2024-05-22
10
0
0
Java基础
如何保证集合的线程安全
使用synchronized private List<String> list = new ArrayList<>(); public void add(String str){ synchronized(this){ list.add(str); } } 使用Collections.s
2024-05-22
9
0
0
Java基础
HashMap的负载因子
概念 往hashmap中put元素时,如果元素的个数size 超过临界值threshold,就会进行自动扩容,在扩容之后,需要对原有元素进行rehash重新分配。 临界值(threshold) = 负载因子(loadFactor) * 容量(capacity)。 loadFactor为负载因子,标识
2024-05-22
14
0
0
Java基础
HashMap、Hashtable、ConcurrentHashMap比较
HashMap 非线程安全 性能最快 key 和 value 都可以为null Hashtable 线程安全(方法是同步的) key 和 value 都不能为 null ConcurrentHashMap
2024-05-22
10
0
0
Java基础
HashMap的数据结构
前言 JDK1.8之前采用:数组+链表 JDK1.8之后采用:数组+红黑树 数组存储的是什么? 在 HashMap 中,数组存储的是键值对(key-value)的 Entry 对象(在 JDK 1.8 之后,是 Node 或 TreeNode 对象)。每个 Entry 对象包含一个键(key)、一个
2024-05-21
10
0
0
Java基础
一致性哈希
概念 一致性哈希(Consistent Hashing)是一种分布式系统中用于数据分布的算法,由麻省理工学院的Karger等人在1997年首次提出。它主要用于解决分布式缓存系统中节点增减时数据分布不均的问题,以及数据迁移的成本问题。 在传统的哈希算法中,如果哈希表的大小变化(例如增加或减少节点),几
2024-05-21
8
0
0
Java基础
1
2
3
4
5