`
llyzq
  • 浏览: 579931 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

监视器和对象锁

    博客分类:
  • J2SE
阅读更多

引用自:http://blog.csdn.net/fenglibing/archive/2007/01/15/1483930.aspx

监视器好比一做建筑,它有一个很特别的房间,房间里有一些数据,而且在同一时间只能被一个线程占据,

进入这个建筑叫做"进入监视器",访问资源时

进入建筑中的那个特别的房间叫做"获得监视器",可以访问资源时

占据房间叫做"持有监视器",可以访问资源,并获得资源锁

离开房间叫做"释放监视器",释放锁

离开建筑叫做"退出监视器". 访问结束

如果监视器被持有,还有线程要访问房间,此时线程将在房间外排除等候。

分享到:
评论

相关推荐

    详谈锁和监视器之间的区别_Java并发

    Java并发锁和监视器的区别 Java并发编程中,锁(lock)和监视器(monitor)是两个重要的概念,它们都是用于实现线程安全的机制。本文将详细讨论锁和监视器之间的区别,并阐述它们在Java并发编程中的应用。 锁...

    Java基本概念监视器实习原理解析

    总结起来,Java中的监视器机制是通过锁和特定的协作方法来实现线程同步的,它确保了多线程环境下的数据安全和程序的正确性。理解和熟练掌握监视器的原理与使用,对于编写高效、可靠的并发代码至关重要。在实际开发中...

    synchronized和LOCK的实现原理深入JVM锁机制比较好.docx

    对象监视器设置了多种状态来区分请求的线程,如 Contention List、Entry List、Wait Set、OnDeck 和 Owner 等。 Contention List 是一个虚拟队列,用于存储所有请求锁的线程。Entry List 是一个等待队列,用于存储...

    Test_return_object.rar_return

    3. **线程等待和锁的释放**:如果一个线程试图进入已由其他线程持有的监视器,它将被阻塞并在等待池中排队。只有当监视器的当前持有者完成执行并释放锁时,这些线程才有可能继续执行。 4. **return语句**:在同步...

    C#多线程监视器程序

    摘要:C#源码,系统相关,多线程,监视器 一个适合初学者参考学习的C#多线程监视器程序,创建3个线程,模拟多线程运行,并绑定TestRun方法,定义线程的绑定方法,在同步对象上获取排他锁,模拟做一些耗时的工作。

    java-syn.zip_Java syn_Java syn锁_java同步锁syn_java锁 syn_syn同步事务锁

    在这里,`object`是监视器锁的对象,只有获取到这个对象的锁的线程才能进入代码块。 3. **synchronized 关键字**: `synchronized`关键字是Java中的内置锁机制,它基于Java内存模型(JMM)来确保线程间的可见性和...

    Java锁的知识总结及实例代码共7页.pdf.zip

    在Java中,锁主要分为两类:内置锁(也称为监视器锁)和显式锁。内置锁是通过synchronized关键字实现的,它可以保证线程的互斥和可见性。当一个线程进入某个对象的同步代码块或同步方法时,会自动获取该对象的锁,...

    java锁的释放与建立

    首先,Java中的锁主要包括两种类型:内置锁(也称为监视器锁)和显式锁。内置锁是通过`synchronized`关键字实现的,它隐含地在每个对象上都存在。当一个线程进入一个由`synchronized`修饰的方法或代码块时,会自动...

    java synchronized demo

    同步方法会隐式地使用`this`作为监视器对象,或者对于静态方法,监视器对象是对应的类的Class实例。 3. **监视器对象**: - 监视器对象是用于锁定的目标,可以是任何对象。在同步代码块中,可以自定义对象作为...

    JAVA多线程的锁机制和无锁并行.docx

    锁机制可以分为内部锁和外部锁两种,内部锁又称为监视器或内部锁,它是一种非公平的排它锁,能够保障原子性、可见性和有序性。 内部锁通过 synchronized 关键字来实现,可以用于修饰方法以及代码块,被修饰的方法...

    Java语言中的多线程编程.pdf

    任何对象都可以作为同步监视器对象,每个同步监视器对象都有且仅有一个锁,线程一旦获取了该同步监视器对象的锁,其他访问该同步监视器对象的线程就要等待。 例如,使用Java程序模拟航班售票系统,在多个窗口同时...

    线程锁+ThreadLocal.docx

    总的来说,线程锁和线程池是Java中处理多线程并发问题的重要工具。线程锁通过`synchronized`关键字确保了共享资源的互斥访问,而线程池则通过高效地管理和复用线程,提高了系统的并发性能。在实际开发中,理解并合理...

    java锁机制详解.pdf

    对于代码块,可以通过`synchronized(obj){...}`的形式指定对象锁,确保同一时间只有一个线程能够执行该代码块。 - **对象实例与锁的关系**:每个对象都有一个内置锁,当线程进入synchronized方法或代码块时,会获取...

    数据访问同步锁

    例如,`ReentrantLock`支持公平锁和非公平锁,以及可中断的锁等待。 在实际开发中,合理使用数据访问同步锁可以避免死锁、活锁和饥饿等问题。死锁是两个或更多线程互相等待对方释放资源,导致都无法继续执行的状态...

    多线程的使用与线程锁的两种实现

    Java提供了一些线程通信的工具,如wait(), notify()和notifyAll(),它们都与对象的监视器(monitor)相关联。但在实际使用中,由于它们容易导致死锁和不易管理,现在更推荐使用java.util.concurrent包中的高级并发...

    监控SQL_Server_2005状态

    活动监视器分为三部分:进程信息、按进程分类的锁和按对象分类的锁,这些信息有助于了解当前数据库活动和资源使用情况。通过筛选器可以定制显示的内容,对于排查锁定问题,活动监视器还能终止导致死锁或无响应的进程...

    synchronized ReentrantLock volatile Atomic 原理分析.docx

    执行monitorenter指令时需要先获得对象的锁(每个对象有一个监视器锁monitor),如果这个对象没被锁或者当前线程已经获得此锁(也就是重入锁),那么锁的计数器+1。如果获取失败,那么当前线程阻塞,直到锁被对另...

    Java 同步锁(synchronized)详解及实例

    其中,`object`是监视器对象,每个线程在进入同步块之前必须先获得监视器对象的锁。在售票示例中,我们可以用`this`作为监视器对象,因为它代表当前类的实例: ```java public void run() { for (int i = 0; i ...

    类似Object监视器方法的Condition接口(详解)

    在Java并发编程中,`Condition`接口是一个非常重要的概念,它提供了类似于`Object`类的监视器方法(如`wait()`、`notify()`和`notifyAll()`),但具有更高的灵活性。`Condition`接口是Java `java.util.concurrent....

    java多线程和锁,用于学习参考

    Java中的锁分为内置锁(也叫监视器锁)和显式锁。内置锁是通过`synchronized`关键字实现的,它具有自动获取和释放锁的能力,能防止多个线程同时访问同一块代码,确保线程安全。同步方法和同步代码块是`synchronized`...

Global site tag (gtag.js) - Google Analytics