`
wylsx
  • 浏览: 11191 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

明确synchronized method 的 同步锁

    博客分类:
  • java
阅读更多
class Test {
	int count;
        /*同步锁为 this */

	synchronized void bump() { count++; }

	static int classCount;

        /*同步锁为 当前class */ 

 	static synchronized void classBump() {
		classCount++;
	}
}


等同于

class BumpTest {
	int count;
	void bump() {
		synchronized (this) {
			count++;
		}
	}
	static int classCount;
	static void classBump() {
		try {
			synchronized (Class.forName("BumpTest")) {
				classCount++;
			}
		} catch (ClassNotFoundException e) {
				...
		}
	}
}

 

分享到:
评论

相关推荐

    java中synchronized用法

    当有一个明确的对象作为锁时,就可以这样写程序,但当没有明确的对象作为锁,只是想让一段代码同步时,可以创建一个特殊的 instance 变量(它得是一个对象)来充当锁: class Foo implements Runnable{ private ...

    JAVA架构面试_并发面试专题.pdf

    在上述的伪代码例子中,如果`synchronized`不支持可重入,线程在执行`method2`(已持有锁)时调用`method1`(也需要锁),线程会因为无法再次获取锁而被阻塞,导致死锁。但是,`synchronized`是可重入的,当前线程...

    实例解析Java中的synchronized关键字与线程安全问题

    首先,我们要明确`synchronized`锁定的是对象,而不是代码。这意味着当多个线程试图访问同一个对象的`synchronized`代码块或方法时,只有一个线程能够获得锁并执行,其他线程必须等待。这样可以防止多个线程同时修改...

    java 中同步方法和同步代码块的区别详解

    同步代码块可以明确地指定锁对象,但代码可能更复杂。 在设计多线程程序时,通常建议尽量缩小同步的范围,以减少锁竞争,提高程序的并发性能。如果一个方法只需要保护部分代码,那么使用同步代码块更为合适。然而,...

    15个顶级Java多线程面试题及回答.docx

    2. **锁的范围**: `volatile`只能保证单个变量的可见性,而`synchronized`可以保护整个方法或代码块。 3. **保证**: `volatile`仅保证可见性和有序性,而`synchronized`还保证原子性。 ```java public class ...

    Java工程师试题(机构招聘)

    - `public void method2(){ synchronized (obj){}}`: 方法内同步,锁定指定的对象 `obj`,锁的范围更小。 5. **代码分析与输出结果** - 第一个方法交换了数组 `name` 的前两个元素,输出:`"Lily,mike"`。 - 第...

    findBugs解释

    在Java中,对于布尔类型的同步通常是一个不良实践,特别是当使用`Boolean`的实例作为同步锁时。因为`Boolean`是一个对象,多个线程可能共享同一个实例(如`Boolean.FALSE`),这就可能导致多个线程阻塞等待同一个锁...

    Java程序员面试三十二问

    `synchronized`关键字通过锁机制来实现线程同步,确保同一时刻只有一个线程能够访问被同步的代码块或方法。它可以通过内置锁(监视器锁)或显式锁(ReentrantLock等)实现。 ### 25. try-catch-finally语句的执行...

    IDEA 阿里巴巴最新代码规约插件

    - 合理使用同步机制,避免过度使用`synchronized`关键字导致性能下降。 5. **并发控制**: - 使用线程安全的数据结构和集合,如`ConcurrentHashMap`,避免手动实现线程同步。 - 对于并发访问的共享资源,应使用...

    ORACLE认证考试ocjp题库(覆盖率99%)本人刚考完

    - `obj.wait()` 必须在同步上下文中调用,并且必须在调用之前获取到同步对象的监视器锁。 - 由于 `obj` 并不是同步块的对象,因此调用 `obj.wait()` 时会抛出 `IllegalMonitorStateException`。 - 其他选项: - ...

    阿里java开发手册prf高清

    6. **并发编程**:在多线程环境下,手册提供了关于锁、并发工具类、并发集合等使用的最佳实践,如合理使用`synchronized`关键字,优先考虑使用`ConcurrentHashMap`而非普通的`HashMap`。 7. **日志记录**:良好的...

    基于JAVA网络远程监控系统软件的实现(源码)

    同时,同步机制如synchronized关键字或java.util.concurrent.locks包中的锁,用于确保多线程环境下的数据一致性。 此外,系统可能还需要提供异常处理机制,确保在出现错误时能够及时恢复或给出反馈。JAVA的try-...

    java面试问题集锦

    - **Synchronized**:关键字,用于同步代码块或方法,隐式地获取和释放锁。 - **Lock**:接口,提供比`synchronized`更高级别的锁管理功能,例如可中断的锁请求、定时锁等待等。 ##### 多线程中同步与锁 在多线程...

    java面试宝典2012版

    同步可以通过synchronized关键字或使用显式锁(如ReentrantLock)来实现。 51. 启动线程使用run()还是start()? 应该使用start()方法来启动线程,因为start()会调用线程的run()方法,而直接调用run()方法则不会...

    JAVA代码规范详细版.zip

    - 避免过度使用全局锁,考虑使用局部锁或锁对象。 - 使用原子类(`Atomic*`)进行线程安全的变量操作。 9. **单元测试** - 为关键功能编写单元测试,确保代码的正确性。 - 使用JUnit框架进行测试,遵循 Arrange-...

    Java语言编程规范--华为技术有限公司

    - 方法名:小驼峰命名法,动词放在前面,例如`methodName`。 - 包名:所有小写字母,按域名逆序,例如`com.example.myproject`。 2. **注释规范** - 单行注释使用`//`,多行注释使用`/* ... */`。 - 类、接口和...

    JAVA 编码规范_沈阳东软软件股份有限公司

    - **对每个对象使用多“锁”的机制来增大并发**:通过使用多个锁来增加并发性。 **9.6 循环** - **边界**:循环边界应明确且正确。 - **循环体内避免构建新对象**:减少循环体内的对象创建,提高性能。 - **break*...

    超级有影响力霸气的Java面试题大全文档

     继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而...

Global site tag (gtag.js) - Google Analytics