首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Java并发编程
哪能一直都快乐
创建于2021-08-08
订阅专栏
并发编程
等 2 人订阅
共11篇文章
创建于2021-08-08
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
掌握并发编程
我们渴求的是在性能遇到瓶颈的时候,通过多核CPU的优势让程序运行的更快。但是并发并不是总能改进性能,并发在CPU有很多空闲时间时能明显改进程序的性能
线程复用:线程池
为了避免系统频繁的创建和销毁线程,我们可以让创建的线程进行复用。线程池中,总有几个活跃线程,当你需要使用线程时,可以从池子中拿一个空闲线程,当完成工作是,将这个线程退回线程池中,以便其他人使用。
并发编程的扩展-Future&CompletableFuture| 8月更文挑战
Future模式是多线程并发编程的扩展,这种方式支持返回结果,使用get()方法阻塞当前线程。它的核心思想是异步调用,当我们执行某个函数时,它可能很慢,但是我们又不着急要结果。因此,我们可以让它立即返
倒计时器:CountDwonLatch&循环栅栏:CyclicBarrier| 8月更文挑战
CountDownLatch CountDownLatch是一个非常实用的多线程控制工具类。latch是门闩的意思,该工具是为了解决某些操作只能在一组操作全部执行完成后才能执行的情景。例如,游乐园里的
允许多个线程同时访问:信号量(Semaphore)| 8月更文挑战
信号量并不是Java中独有的功能,而是一种为并发编程提供的一种模型。本质上来说,信号量就是具有原子性的一个计数器,当使用了资源时,计数器就要减一,表示可用的资源就少了一个,当用完这个资源将其归还,计数
并发问题的另一种解决思路-ThreadLocal
除了控制资源的访问外,我们还可以通过增加资源来保证所有对象的线程安全。比如,让100个人填写个人 信息表,如果只有一只笔,那么大家就得挨个填写,对于管理人员来说,必须保证大家不会去哄抢这仅存的一支笔,
无锁-CAS与Atomic原子操作
无锁 就人的性格而言,我们可以分为乐天派和悲观派。对于乐观派来说,总是会把事情往好的方面想。他们认为所有所有事情总是不太容易发生问题,出错是小概率的,所以我们可以肆无忌惮地做事。如果真的不幸遇到了问题
锁优化
锁优化 减少锁持有时间 如上,对整个method方法加锁,但是方法1和方法3都不需要加锁,那么可以将代码优化成如下所示: 减小锁粒度 在JDK 1.7中ConcurrentHashMap采用的segm
synchronized的扩展:重入锁&AQS
简单应用 从上面的示例代码可以看出,相比于synchronized,ReentrantLock需要自己执行何时加锁,何时释放锁。 何为重入 ReentrantLock支持连续多次获取同一把锁。这对一些
并发问题最直接的处理方式-synchronized
在Java中按照加锁方式可以将同步锁分为两种类型。 显式锁:ReentrantLock,实现juc里Lock,实现是基于AQS实现,需要手动加锁跟解锁ReentrantLock lock(),unlo
并发问题的源头
线程切换带来的原子性问题 一个很经典的例子就是银行账户转账问题: 比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。这2个操作必须要具备原子性才能