Java对象作为监视器
我使用了以下资源来获得Java监视器的摘要 下面是我对Java的理解总结 监视器是一个关于线程的对象。这意味着当Java中说所有对象都是监视器时,这意味着每个对象都具有线程感知的特性 线程是一个活动对象。其他对象是被动的>,但知道线程。因此监视!换句话说,被动物体已经被智能化了 为什么叫“监视器”,因为它监视自己!来自什么?>来自活动对象,即线程 监视器有什么意识 a) 它知道当前访问它的线程。{owner} b) 它知道什么线程在等待它,直到满足一个特殊条件>。{wait set} c) 它知道谁在队列中进入它{entry 集合} 那么线程怎么可能成为对象所有者呢?它必须>获取对象的锁Java对象作为监视器,java,concurrency,jvm,monitor,Java,Concurrency,Jvm,Monitor,我使用了以下资源来获得Java监视器的摘要 下面是我对Java的理解总结 监视器是一个关于线程的对象。这意味着当Java中说所有对象都是监视器时,这意味着每个对象都具有线程感知的特性 线程是一个活动对象。其他对象是被动的>,但知道线程。因此监视!换句话说,被动物体已经被智能化了 为什么叫“监视器”,因为它监视自己!来自什么?>来自活动对象,即线程 监视器有什么意识 a) 它知道当前访问它的线程。{owner} b) 它知道什么线程在等待它,直到满足一个特殊条件>。{wait set} c)
1对象是锁还是有锁 2以上的a、b、c是对象状态的一部分,还是由JVM跟踪(保留记录并将其与对象ID关联等) Java中的每个对象都有一个与其关联的监视器。监视器是本质上等同于可重入锁的构造;同一个线程可以多次进入监视器,并且对条目的数量进行计数并与出口进行匹配 你关于“主动”和“被动”物体的结论没有多大意义。(我不是说他们错了;我是说我不明白你想说什么。) 定义良好,但实现不明确,可以通过多种方式实现监视器。JVM以JVM作者决定的某种方式跟踪a/b/c中的所有项目。由于绝大多数对象的监视器从未使用过,一种策略是有一个监视器表,与堆分开,其中包含一个
struct
,其中包含对象的JVM ID、监视器中当前的线程和条目计数
synchronized(anObject)
表示获取anObject的监视器