当前位置: 首页 > 面试题库 >

Java中的监视器是什么?

曾成天
2023-03-14
问题内容

Java并发编程中所指的监视器是什么?

当我看到“每个对象都关联了一个监视器”时,这是什么意思?

这是一个特殊的对象吗?


问题答案:

监视器是控制对对象的并发访问的机制。

这使您可以执行以下操作:

线程1:

public void a()
{
    synchronized(someObject) {
        // do something (1)
    }
}

线程2:

public void b()
{
    synchronized(someObject) {
        // do something else (2)
    }
}

这样可以防止线程1和2同时访问受监视(同步)的部分。一个将启动,并且监视器将阻止另一个在第一个完成之前访问该区域。

这不是一个特殊的对象。它的同步机制位于类层次结构的根目录:中java.lang.Object

还有waitnotify方法也将使用对象的监视器在不同线程之间进行通信。



 类似资料:
  • 监听器也叫listener,是servlet的监听器,可以用于监听web应用程序中某些对象的创建、销毁、增加、修改、删除等动作的发生,然后做出相应的响应处理。当范围对象的状态发生变化时,服务器自动调用监听器对象中的方法,常用于系统加载时进行信息初始化,统计在线人数和在线用户,统计网站的访问量。 配置监听器的方法: 通过@Component把监听器加入Spring容器中管理; 在applicatio

  • 问题内容: 在阅读有关Java线程的文章时,我经常注意到这样的表达:“当前线程是该对象的监视器的所有者”。我的意思是:线程有权在对象上进行操作。但是我很困惑,为什么我们使用“对象的监视器”而不是“对象的锁”? 简而言之,我不知道“监视”一词的含义。这个问题可能很奇怪而且很简单。但我希望任何人都能帮助解决它。3ks 问题答案: 但是我感到困惑的是为什么要在“对象的锁”中使用“对象的监视器”一词呢?

  • 问题内容: 假设我有成千上万个对象的数组,还有少量线程可以访问每个对象。我想保护对一种对象方法的访问。最简单的方法是将该方法声明为。但是,无论采用哪种实施方式,这都可能导致创建数千个监视器。如果这是Win32,我将永远不会创建数千个内核对象(例如Mutex),但是CRITICAL_SECTIONs 可能 是合理的。我想知道Java中的情况如何。考虑到争用的机会很低,使用监视器会带来比其所需的过多内

  • 问题内容: Java中的Monitor是否不限制对实例变量的访问,而不仅限于对已声明为 同步 的方法或在 同步 语句中进行代码访问? 我创建了两个线程,invokes 方法,该方法声明为已 同步, 而invokes 方法,该方法未声明为已同步。两者都调用共享对象上的方法。 可以在对象的 监视器 或 锁 仍由持有者的情况下修改对象的实例变量。 Java中的监视器是否不限制对实例变量的访问,而不仅限于

  • 这一节我们编写一个监视器:EventLogMonitor ,也就是用来接收事件的程序,用来代替 netcat 。EventLogMonitor 做下面事情: 接收 LogEventBroadcaster 广播的 UDP DatagramPacket 解码 LogEvent 消息 输出 LogEvent 消息 和之前一样,将实现自定义 ChannelHandler 的逻辑。图13.4描述了LogEv

  • 问题内容: 谁能给我一个简短的Java容器的完整列表吗?我知道的一些对象是Array,Arraylist,Hashtable,HashMap,HashSet,Node,NodeList,TreeNode和TreeMap。 问题答案: 本质上,所有有关Java“容器”(或称为集合)的文档都在这里,其中最有用的页面是此简短列表。集合框架还有其他实现,例如fastutils框架,如果您知道要使用的类型,