获得徽章 0
- 不是说增强for循环是迭代器的简写形式嘛,没懂为啥数组也能增强for啊,感觉他和迭代器没关系嘛。而且数据不就是一个数据结构嘛,和迭代器接口没实现,也不能是实现关系嘛。有没有人告知一下啊
。懵逼了
等人赞过527 - 刚学juc,想请教一个问题:我看了好多关于synchronized的文章,感觉有好多说法啊。第一种就是说每个java对象都会关联一个monitor对象嘛,而且这个monitor对象不是造java对象时就立刻生成的,而是运行时动态创建的(问chatGPT,它是这样说的),在这个基础上,有线程要执行同步代码块时,它先看你这个锁对象是否关联了monitor对象,关联了,那就回尝试获取monitor对象的占有权,如果monitor计数器为0,则可以获取,然后计数器+1;计数器不为0,那就获取不了,那么就去entryList里等待。如果没关联,那就先关联,再尝试去获取monitor占有权。(但是这种说法我看人家展示的字节码里又没有这个获取monitor的过程,直接用的就是moniterenter和monitorexit2个指令)第二种说法是:当多个线程同时访问一段同步代码块时,首先会进入entryList集合,当线程获取到对象的monitor后进入owner区域,把owner设置成当前线程,把计数器+1......(这个说法我没看懂,不具体描述流程我是真不会
);第三张说法是:在 Java 虚拟机(HotSpot)中,Monitor 是基于 C++实现的,由ObjectMonitor实现的。每个对象中都内置了一个 ObjectMonitor对象......(那这个意思是不是生成java对象时有已经关联了一个monitor对象)。
第一种说法来源:问chatGPTd1,然后我理解的就是这个意思
第二种说法来源:blog.csdn.net里的理解java对象头鱼monitor这一小节里
第三张说法是(javaGuide里的)javaguide.cn
然后我就真昏了,学糊涂了,有没有大哥完整、具体的描述一下这个同步代码块里使用monitor锁的这个过程啊
展开评论点赞
。懵逼了
);第三张说法是:在 Java 虚拟机(HotSpot)中,Monitor 是基于 C++实现的,由ObjectMonitor实现的。每个对象中都内置了一个 ObjectMonitor对象......(那这个意思是不是生成java对象时有已经关联了一个monitor对象)。