`
stlin
  • 浏览: 18325 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

关于synchronized method

    博客分类:
  • java
 
阅读更多
synchronized有四种用法:
synchronized method
synchronized(this)
synchronized(object)
synchronized(class)

估计大家最常用的就是synchronized method,这个用法显然有一个误解。字面意义是,就是同步该方法,同时只有一个线程可以运行该方法。但实际上,这远远不够。
synchronized method(){}
等价于
method()
{
   synchronized(this){}
}
也就是说,锁定在this对象上,而不是方法上。
所以,如果一个类有多个synchronized方法,那么同时只能有一个线程运行一个synchronized方法。
所以在写同步方法时要考虑范围粒度是否太大,特别是在多个人同时维护公用代码时,要明白你加的synchronized方法不是独立存在的。
0
3
分享到:
评论

相关推荐

    Android synchronized 测试案例

    public synchronized void method() { // 方法体 } ``` 2. 同步代码块:锁定对象实例,只允许一个线程访问指定的代码块。 ```java public void method() { synchronized (this) { // 代码块 } } ``` 在上述案例...

    synchronized的几种示例

    在Java编程语言中,`synchronized`关键字是一个重要的并发控制机制,用于确保多线程环境下的数据一致性。本文将深入探讨`synchronized`的几种使用示例,包括方法加锁、代码块加锁(针对`this`和对象)以及静态方法...

    java中synchronized用法

    public void method3(SomeObject so){ synchronized(so) { //….. } } 锁就是 so 这个对象,谁拿到这个锁谁就可以运行它所控制的那段代码。 当有一个明确的对象作为锁时,就可以这样写程序,但当没有明确的对象...

    synchronized用法大全实例

    public static synchronized void method() { // ... } } ``` - **对象锁**:如果`synchronized`修饰非静态方法或者同步语句块中的对象引用是实例引用,那么锁定的是该实例对象。例如: ```java public ...

    synchronized并发讲解源码.zip

    public static synchronized void method() { // ... } } ``` 在这种情况下,所有线程对`method()`的访问都会互斥,无论它们是否共享同一个对象实例。 除了锁住对象或类,`synchronized`还可以与`wait()`、`...

    Java synchronized使用案例

    public synchronized void method() { // 方法体 } ``` 2. **代码块同步**:锁定特定对象,只有获取到该对象锁的线程才能进入代码块。 ```java synchronized (object) { // 代码块 } ``` 这里的`object`通常是共享...

    Synchronized关键字的用法

    public synchronized void method() { // 同步方法体 } ``` - 当一个线程调用此方法时,会锁定当前对象实例,其他线程如果想调用该方法必须等待当前线程释放锁。 - **静态方法**:若将`synchronized`用于静态...

    java同步synchronized关键字用法示例

    public synchronized void method() { // 代码块 } ``` - **代码块同步:** 也可以使用`synchronized`关键字来同步代码块,这样可以更细粒度地控制同步范围,提高程序性能。 ```java public void method() { ...

    JAVA synchronized详解

    public synchronized void method() { // 方法体 } ``` 对于静态方法,可以使用`synchronized`关键字修饰类名,例如: ```java public class MyClass { public static synchronized void staticMethod() { // ...

    synchronized枷锁实例

    public static synchronized void method() { // ... } } ``` 在这个例子中,`method()`就是一个类锁,多个线程同时调用此方法时,只有一个线程能执行,其他线程必须等待。 **对象锁(Instance Lock)** 对象锁...

    Java synchronized详细解读.docx

    同步方法是通过在方法声明前加上`synchronized`关键字,例如`public synchronized void method() {...}`。同步代码块则是通过`synchronized`关键字包裹一段代码,如`synchronized (object) { ... }`,这里的`object`...

    java synchronized demo

    在Java编程语言中,`...总结,`java synchronized demo`是一个关于如何在Java中使用`synchronized`关键字进行线程同步的示例,通过理解和实践这个例子,开发者可以更好地掌握多线程环境下数据安全和同步的重要性。

    synchronized与单例的线程安全

    public synchronized void method() { // 代码 } ``` 2. 代码块同步:针对特定对象,使用`synchronized`关键字锁定代码块。这允许更细粒度的控制,仅锁定需要同步的部分代码。 ```java Object lock = new Object...

    Synchronized 终极说明教程

    public synchronized void method() { // ... } ``` 这样,同一时间只能有一个线程执行该方法。 2. 代码块同步:通过指定一个对象锁,对特定代码块进行同步,语法如下: ```java synchronized (object) { // ... ...

    java_synchronized详解

    public static synchronized void method() { // 执行代码 } } ``` 在这里,所有对`method`的调用都会互相阻塞,因为它们共享同一个锁——`Thread5.class`。 - **锁的可重入性**:`synchronized`支持可重入锁...

    java-synchronized详解.doc

    public synchronized void method() { // 代码 } ``` 同步方法通过方法调用的对象获得锁,即锁是当前对象(`this`)。 2. 同步代码块: ```java public void method() { synchronized (object) { // 代码 } } `...

    Javasynchronized机制.pdf

    public synchronized void method() { // ... } } ``` 等价于: ```java public class MyClass { public void method() { synchronized (this) { // ... } } } ``` 在这里,`this`代表调用方法的...

    详细解读java同步之synchronized解析

    public synchronized void method() { // ... } ``` - **同步代码块**:指定一个对象作为锁,对特定的代码块进行同步。 ```java Object lock = new Object(); synchronized (lock) { // ... } ``` - **...

    Java并发-Synchronized关键字.docx

    2. **同步方法(synchronized method)**: - 对于实例方法: ```java public synchronized void method() { // 临界区 } ``` 锁定的是当前实例对象。 - 对于静态方法: ```java public static ...

    Java中synchronized正确使用方法解析

    Java 中 synchronized 正确使用方法解析 Java 中 synchronized 关键字是解决线程安全问题的重要手段,它可以确保在多线程环境下,共享资源的访问安全性。本文将详细介绍 Java 中 synchronized 的正确使用方法,通过...

Global site tag (gtag.js) - Google Analytics