首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
并发编程实战
订阅
猿码架构
更多收藏集
微信扫码分享
微信
新浪微博
QQ
8篇文章 · 6订阅
显示锁
Java 5.0增加ReentrantLock,作为内置锁的补充选择。 Lock接口中定义了一种无条件、可轮询的、定时的以及可中断的锁获取操作,所有加锁和解锁的方法都是显式的。 ReentrantLock实现了Lock接口,并提供了与synchronized相同的互斥性和内存可…
性能与可伸缩性
要想通过并发来获得更好的性能,需要做好两件事;更有效的利用现有的处理资源,以及在出现新的处理资源时使程序尽可能利用这些资源。 应用程序的性能可以采用多个指标来衡量,例如服务时间、延迟时间、吞吐率、效率、可伸缩性以及容量,有衡量运行速度的,即多快能完成,又衡量处理能力的,能完成多…
JAVA并发编程——避免活跃性危险
我们平时使用加锁机制来确保线程安全,但如果过量地使用加锁,则可能导致锁顺序死锁。 同样,我们使用线程池和信号量来限制对资源的使用,但这些被限制的行为可能导致资源死锁。 经典的“哲学家进餐”问题很好地描述了死锁状况。 5个哲学家围坐在一个圆桌上,每两个哲学家之间都有一只筷子,哲学…
java并发编程:线程池的使用
饥饿死锁:当前任务依赖后续任务完成,但是后续任务没有资源。比如单线程池里面的资源等待下一个任务的执行结果。 合理设置线程池大小。预先判断任务之间的依赖关系。保证依赖任务都可以得到执行。 合理安排线程池里的任务,一个简单解决方法是将任务分类。 递归过程中每一次调用都提交给新的进程…
Java并发实践(七)取消与关闭
如果外部代码能在某个操作正常完成之前将其置入“完成”状态,那么这个操作就可以成为可取消的。 用户取消请求:用户点击图形界面程序中的“取消”按钮,或者通过管理接口来发出取消请求。 有时间限制的操作:例如,某个应用程序需要在有限时间内搜索问题空间,并在这个时间内历最佳的解决方案。当…
Java并发实战(六) 任务执行
任务交由子线程处理,提高了响应性和吞吐量。 任务处理的代码必须是线程安全的。 线程生命周期的开销非常高。 资源消耗。可运行线程多于可用处理器的数量,会有线程闲置占用内存,且大量线程竞争CPU时将产生其他性能开销。 稳定性。不同平台可创建线程的数量有限制。 Web服务器不会再高负…
并发编程实战(五):构建块
ConcurrentModificationException也可能出现在单线程代码中;当对象并非通过Iterator.remove,而是直接从容器中删除时,就会出现这种情况。 2使用并发容器CopyOnWriteArrayList代替ArrayList和Vector。 2.当…
并发程序的测试
在构建对并发类的安全性测试中,需要解决的关键问题在于,要找出那些容易检查的属性,这些属性在发生错误的情况下极有可能失败,同时又不会使得错误检查代码人为地限制并发性。理想的情况是,在测试属性中不需要任何同步机制。 testLeak方法将多个大型对象插入到一个有界缓存中,然后将它们…