java对象锁&类锁(2010-05-30 14:28:12)转载标签: 杂谈 分类: java线程
对象锁
当一个对象中有synchronized method或synchronized block的时候调用此对象的同步方法或进入其同步区域时,就必须先获得对象锁。如果此对象的对象锁已被其他调用者占用,则需要等待此锁被释放
同步静态方法/静态变量互斥体
由于一个class不论被实例化多少次,其中的静态方法和静态变量在内存中都只由一份。所以,一旦一个静态的方法被申明为synchronized。此类所有的实例化对象在调用此方法,共用同一把锁,我们称之为类锁。一旦一个静态变量被作为synchronized block的mutex。进入此同步区域时,都要先获得此静态变量的对象锁
类锁
由上述同步静态方法引申出一个概念,那就是类锁。其实系统中并不存在什么类锁。当一个同步静态方法被调用时,系统获取的其实就是代表该类的类对象的对象锁
在程序中获取类锁
可以尝试用以下方式获取类锁
synchronized (xxx.class) {...}
synchronized (Class.forName("xxx")) {...}
同时获取2类锁
同时获取类锁和对象锁是允许的,并不会产生任何问题,但使用类锁时一定要注意,一旦产生类锁的嵌套获取的话,就会产生死锁,因为每个class在内存中都只能生成一个Class实例对象。
分享到:
相关推荐
Thinking in C: Foundations for Java & C++ by Chuck Allison produced by Bruce Eckel Chapter 1: Introduction and Getting Started40 MinutesStart Lecture Chapter 2: Fundamental Data Types41 ...
### Java 错误处理:java.lang.OutOfMemoryError: Java heap space 在Java应用程序开发过程中,经常遇到的一个问题就是内存溢出错误,特别是在处理大量数据或长时间运行的应用时。其中,“java.lang....
Study1 类: Java 父类与子类...Study14 类:Java 线程同步与锁机制 Study15 类:Java 并发包 Study16 类:Java 动态代理 Study17 类:Java 字节流与字符流 Study18 类:Java NIO与NIO.2 Study19 类:Java Socket编程
Java 锁可以分为两大类:synchronized 锁和 ReentrantLock 锁。 一、Synchronized 锁 1. 锁的原理:synchronized 锁是基于对象头的 Mark Word 来实现的。Mark Word 中有一个锁标志位,用于标识对象的锁状态。 2. ...
本示例"java多线程的条件对象和锁对象demo"着重探讨了如何利用锁对象和条件对象来精细控制线程的执行流程。 首先,我们需要了解Java中的锁对象。Java提供了多种类型的锁,其中最基础的是`synchronized`关键字,它...
本资源摘要信息涵盖了 Java 面向对象编程的多个知识点,包括 Font 类、Toolkit 类、包机制、抽象类、数组操作等。 1. Font 类: Font 类是 Java 中的一个类,用于设置程序中的字体实例对象。 Font 类有三个参数:...
里面的内容为: 第1关:Object类 第2关:JAVA基础类型包装类-练习 第3关:String&StringBuilder&StringBuffer类-练习 第4关:Random类 第5关:Date类和SimpleDateFormat类的用法 第6关:Math类
Java源码:Windows密码锁.zip是一个包含用于创建一个基于Java的Windows登录屏幕锁定程序的源代码的压缩包。这个项目通常被用作学习Java编程、图形用户界面(GUI)设计以及安全性的实例。在这个项目中,开发者会使用...
在Java中,ReentrantReadWriteLock类是读写锁的实现,它包含两个锁:读锁(共享锁)和写锁(独占锁)。读锁可以被多个线程同时持有,而写锁是独占的,当写锁被占用时,其他线程既不能获取读锁也不能获取写锁。 5. ...
java乐观锁原理与实现案例分析 java乐观锁是一种乐观的并发控制机制,它认为线程冲突的可能性小,比较乐观,直接去操作数据,如果发现数据已经被更改(通过版本号控制),则不更新数据,再次去重复所需操作,知道...
"Java 锁机制 Synchronized" Java 锁机制 Synchronized 是 Java 语言中的一种同步机制,用于解决多线程并发访问共享资源时可能出现的一些问题。 Java 锁机制 Synchronized 的概念 在 Java 中,每个对象都可以被...
8. **类锁**:类锁是Java中类级别的锁,通过synchronized修饰类的静态方法或者同步代码块实现,确保同一时间只有一个类实例执行特定的代码。 9. **行级锁**:在数据库管理系统中,行级锁只锁定被操作的数据行,其他...
Java 同步锁是Java多线程编程中的关键概念,用于确保多个线程在访问共享资源时能够有序、安全地进行。在这个主题中,我们将详细探讨Java中的同步机制,包括同步方法、同步代码块、synchronized关键字以及其背后的...
在Java中,我们可以使用多种方式实现命名锁,例如使用`java.util.concurrent.locks.ReentrantLock`类,通过存储锁对象的映射来关联锁名。此外,还有一些开源库,如`com.lmax.disruptor.SleepingWaitStrategy`或`org....
Java语言提供了多种锁机制,包括`synchronized`关键字、`ReentrantLock`类以及`ReadWriteLock`接口等。 #### 二、synchronized关键字详解 `synchronized`是Java中一种最基本的锁机制,它可以修饰实例方法、静态...
1. **类与对象**:在Java中,类是对象的蓝图,定义了对象的属性(数据成员)和行为(方法)。对象是类的实例,具有类所定义的属性和行为。 2. **封装**:封装是OOP的基石,通过访问修饰符(如public, private, ...
6. 对象互斥锁:在Java中,使用`synchronized`关键字可以给对象加互斥锁,以实现线程同步。 7. 线程执行体定义:线程的执行体通常通过定义`run()`方法来实现,当调用线程对象的`start()`方法时,Java会自动调用`run...
Jackson库的主要类包括`JsonParser`和`ObjectMapper`,它们可以帮助我们将JSON数据映射到Java对象上。 1. **引入Jackson库** 首先,需要在项目中引入Jackson库。如果你使用的是Maven,可以在pom.xml文件中添加以下...
4. **多态**:多态性允许不同类型的对象对同一消息作出响应,Java通过方法重写(Override)和抽象类、接口来实现多态。 5. **构造器**:构造器是类的一个特殊方法,用于初始化新创建的对象。Java中的构造器与类同名...
1. **类级别锁(Class-Level Lock)**:当`synchronized`修饰静态方法或静态代码块时,锁住的是整个类的Class对象。这意味着,无论实例化了多少个对象,只有一个线程可以执行静态同步代码,适用于所有实例共享的资源...