线程同步之 Synchronized Methods

Synchronized Methods

线程同步 提供了两种策略java

  1. Synchronized Methodsc++

  2. Synchronized Statementssegmentfault

本文介绍 Synchronized Methodsapp

一个例子

使用 synchronized 关键字,使一个方法为 synchronized函数

public class SynchronizedCounter {
    private int c = 0;

    public synchronized void increment() {
        c++;
    }

    public synchronized void decrement() {
        c--;
    }

    public synchronized int value() {
        return c;
    }
}

添加 synchronized 关键字有两个做用线程

  1. 当一个 synchronized 方法调用并正在执行时,其余线程调用的 synchronized 方法将会阻塞,直到第一个线程下的 synchronized 方法执行结束code

  2. 当一个 synchronized 方法执行结束后,会为以后的全部阻塞的 synchronized 方法自动创建 happens-before 关系(什么是 happens-before 关系?)。这保证了该对象的全部状态的改变,对于全部线程是可见的对象

BTW:为构造函数添加 synchronized 是语法错误。由于没有意义。rem

相关文章
相关标签/搜索