首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
xch20010
掘友等级
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
7
文章 7
沸点 0
赞
7
返回
|
搜索文章
最新
热门
JAVA并发编程-线程安全、性能问题
这是因为i++不是原子性操作,它本身是i=1,i+1,i=2这三个操作的集合,当线程1还在前2个操作的时候,线程2读到的i依然是i=1,那么线程1最终得到i=2,线程2最终也得到i=2,两次i++相当于只自加了1次。 可以看出来两个线程各拿了一个锁就等待了。 debug可以看下…
JAVA并发编程-线程异常
结果如下,可以看出handler捕获到了子线程的异常并进行了处理。
JAVA并发编程-线程属性
一定是从1开始的,但是JVM运行后,但自己创建的线程id早就不是2了。 可以看到结果,咦,子线程的id直接跑到了11,意味着jvm在执行过程中,创建了其他的线程。 打个断点看看,果然如此。 最好自定义与功能相关的名字,便于打日志进行调试、分析。 因为加了synchronized…
JAVA并发编程-Thread和Object类中的重要方法详解
从结果可以看出来,线程0的执行顺序是先wait,再被notify后,重新获得锁再继续执行完成的,并且线程1的释放锁不是在notify后就立即释放而是该线程执行完毕后释放。 从结果可以看出来,某个对象只释放当前对应的monitor锁,T2没有获得到ResourceB的锁。 结果和…
JAVA并发编程-实现线程的方法
使用interrupt来通知,而不是强制。这是一种规范,可以响应interrupt的线程就可以被中断,而有些不响应的线程则不受我们的控制而无法中断,因为被停止的线程比希望其停止的调用方更清楚何时停止/中断。 普通情况就是指runable状态,非阻塞,在程序中也是让它一直处于相加…
JAVA并发编程-线程的一生
Runnable 对应于操作系统层面中的ready和running两种状态,当线程start后即进入该状态而不是waiting状态。 Blocked 被synchronized保护的一段代码或方法中,如果没有拿到锁,那么就是该状态,等待的是monitor锁这种资源。 Timed…
个人成就
文章被阅读
3,142
掘力值
121
关注了
18
关注者
1
收藏集
10
关注标签
12
加入于
2020-05-20