
多线程
文章平均质量分 85
山涧晴岚.
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程池详解
线程池可以自定义线程数目,通过实验+压测设置线程数目线程的数目是不能具体确定的,因为不同电脑主机的CPU的配置是不确定的,程序的执行特点不确定代码里具体做了什么:是CPU密集型的任务(做了大量的算数运算和逻辑判断)还是IO密集型的任务(做了大量的读写网卡/读写硬盘), 这两种任务各自所占的比例是难以量化的如果任务100%是CPU密集型的话,线程数目最多就是N,因为CPU已经被占满了,如果CPU密集型所占比例很少,IO密集型的所占比例很多(不使用CPU),则线程数目可以多些。原创 2024-06-07 10:49:12 · 679 阅读 · 0 评论 -
死锁的成因以及解决方案
死锁是一个线程加上锁了之后,解不开了在多线程编程中,我们为了防止多线程竞争共享资源而导致数据错乱,都会在操作共享资源之前加上互斥锁,只有成功获得到锁的线程,才能操作共享资源,获取不到锁的线程就只能等待,直到锁被释放。原创 2022-12-29 16:36:39 · 5781 阅读 · 13 评论 -
HashTable, HashMap, ConcurrentHashMap 之间的区别
HashTable的扩容操作:当put元素的时候,发现当前的负载因子已经超过了阈值,就需要触发扩容, 它会申请一个更大的数组,然后把之前旧的数据给搬运到新的数组上。这个操作有一个很大的问题:如果元素的个数足够多,搬运的开销就会很大,本来执行一个put操作的时间复杂度时O(1),但是触发扩容的这次put, 就。进行哈希表操作的时候,都会把旧的内存上的元素搬运一部分到新的空间上,直到最终搬运完成, 才会释放旧的空间。,分段锁是好几个链表共用一把锁,发生锁冲突的概率比每个链表一把锁更高,代码实现起来更复杂。原创 2024-06-07 10:48:19 · 604 阅读 · 0 评论 -
synchronized 和 ReentrantLock 的区别
2.ReentrantLock 可以实现公平锁,它默认是非公平的,在构造的时候给它传入一个参数true就变公平锁了。1.tryLock 试试看能不能加上锁,试成功了,就加锁成功,试失败了,就放弃加锁,并且还。(在开发过程中,"死等的策略"需要特别注意,tryLock就提供了应对的方法)虽然ReentrantLock有缺点,但是它有一些特定的功能是。synchronized和ReentrantLock的。(通过C++实现的),而ReentrantLock是。ReentrantLock 搭配的是。原创 2022-12-26 16:22:42 · 4857 阅读 · 5 评论 -
CAS 的使用场景 & CAS的ABA问题的优化 以及 synchronized 的三大优化
CAS(Compare-And-Swap),是比较和交换的意思,它是一条CPU并发原语,用于判断内存中某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的.它包含了三个参数:V,A,B。V表示要读写的变量内存地址A表示旧的预期值B表示准备设置的新值。原创 2023-01-04 21:57:16 · 6304 阅读 · 24 评论 -
常见实用的锁策略详解
在我们等人的时候,对方还没有到约定地点,一直反复的打电话催促就是自旋锁,而当你发现对方还没到的时候,就在约定的地点找个地方玩手机,叫他来了再在约定的地点旁边找我们一下,多消耗一点时间,却能够用这些时间去做其他的事情,时间被利用起来了,这就是挂起等待锁。如果程序抛出了异常,没有人catch就脱离了之前的代码块,脱离了一层代码,计数器就-1,脱离到计数器为0,也就解锁了,同理加锁代码中出现异常,也是不会死锁的,因为Java使用关键字结合代码块来做解锁操作,这两种锁是站在加锁解锁的角度看待的,看的是加锁解锁的。原创 2022-12-22 00:14:06 · 5365 阅读 · 11 评论 -
定时器的使用和实现
定时器的使用和实现原创 2024-06-07 10:53:19 · 1224 阅读 · 0 评论 -
阻塞队列的使用
1.线程是安全的2.当进行入队操作的时候,队列为满,入队操作就阻塞,直到队列非满的时候入队操作才完成3.当进行出队操作的时候,队列为空,出队操作就阻塞,直到队列非空的时候出队操作才完成生产者消费者模型:例如:3个人包饺子,其中有一个人需要生产饺子皮,他就是生产者,另外的两个人就是消费者,而生产者生产的饺子皮放在桌子上,桌子就是"交易场所".如果生产者生产过快饺子皮已经放满了桌子,他就能进行阻塞等待,如果是饺子皮的生产速度慢于包饺子的速度,那消费者就能够进行阻塞等待。原创 2022-12-19 18:45:19 · 7060 阅读 · 32 评论 -
单例模式的创建(饿汉模式&懒汉模式)
单例模式的创建(饿汉模式&懒汉模式)原创 2022-12-16 23:15:05 · 7424 阅读 · 11 评论 -
wait与notify的使用
wait与notify的使用原创 2022-12-06 23:29:20 · 8198 阅读 · 12 评论 -
CountDownLatch类的使用
CountDownLatch是一种用来控制多线程的工具类,它被称为门阀、计数器或者闭锁.原创 2022-12-17 20:36:42 · 7554 阅读 · 17 评论 -
Volatile关键字的作用
volatile关键字的使用原创 2022-12-09 22:44:21 · 6575 阅读 · 9 评论