JUC
文章平均质量分 73
thor and loki
澳洲UNSW在读IT硕士。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【JUC】wait/notify
当owner里的线程长时间占用cpu,但是它不满足解锁的条件,于是可以调用wait()方法,于是进入waitset,状态也调整为waiting。而entrylist里blocked的线程就从此刻被唤醒,竞争owner。我之前写过sychronized的原理,讲到了monitor里的owner和entrylist。当owner里的线程调用notify()的时候,waitset里waiting的线程被唤醒,进入entrylist重新竞争。一个是在waitset中随机挑一个唤醒,一个是在waitset全部唤醒。原创 2025-01-03 22:23:04 · 251 阅读 · 0 评论 -
【JUC】synchronized
等到thread1运行结束,和monitor的owner断开关联,于是monitor的entrylist中的线程被唤醒开始竞争,竞争成功的线程成为monitor的owner。当thread1调用sychronized给对象加锁,该对象头的markword就会指向monitor对象(java对象关联上monitor对象),markword的锁状态由01变成10,并且monitor的owner变成thread1。a锁的是静态方法即整个类,而b锁的是this,所以锁的不是同一个对象,不存在互斥。原创 2024-12-16 16:18:52 · 929 阅读 · 0 评论 -
【JUC】Day1线程基础
同时线程里是指令流,将一条条指令交给CPU,各个线程处理不同的任务。一个类去实现这个runnable接口,重写run方法,再将这个类作为参数传入thread的构造器,创建thread实例后start。在单核CPU下,如果有两个任务A、B,并发的情况是CPU先处理一部分A,再处理一部分B,反复交替。对于依赖性任务,如果任务之间存在强依赖性(例如需要等待前一个任务的结果),并行化可能导致资源浪费。在多核CPU下,可以实现真正的并行。并行是多个CPU同时运行,并发是多个线程使用一个CPU。原创 2024-11-21 17:09:20 · 459 阅读 · 0 评论
分享