synchronize 三大作用、三大用法

简介: synchronize 三大作用、三大用法

synchronize 的三大作用:

1. 原子性:确保线程之间互斥地访问同步代码,每个线程访问期间不会被中断;

2. 可见性:确保共享变量的修改能够被其他线程及时看到,其实是通过 Java 内存模型中的 “对一个变量 unlock 操作之前,先同步到主内存中;如果对一个变量进行 lock 操作,则将会清空工作内存中此变量的值,在其他线程使用此变量前,需要重新从主内存中 load” 来保证的;

3. 有序性:有效解决重排序问题,代码按先后顺序执行,即 “一个 unlock 操作先行发生于后面的线程对同一个锁的 lock 操作”

synchronize 的三大用法:

1. 修饰实例方法:使用当前实例对象作为锁,进入同步代码前要获得当前实例对象的锁。

2. 修饰静态方法:使用当前类作为锁,进入同步代码前要获得当前类对象的锁。

3. 修饰代码块:自己指定加锁对象,可以是对象锁,也可以是类锁,进入同步代码块前要先获得指定的锁。

相关文章
|
2月前
|
安全 编译器 C#
C#学习相关系列之多线程---lock线程锁的用法
C#学习相关系列之多线程---lock线程锁的用法
|
2月前
|
Java
Java多线程基础-7:wait() 和 notify() 用法解析
这篇内容探讨了Java中的`wait()`和`notify()`方法在多线程编程中的使用。
23 0
|
2月前
|
Java C#
C#学习相关系列之多线程(七)---Task的相关属性用法
C#学习相关系列之多线程(七)---Task的相关属性用法
|
2月前
|
存储 安全 Java
【JavaEE初阶】 volatile关键字 与 wait()方法和notify()方法详解
【JavaEE初阶】 volatile关键字 与 wait()方法和notify()方法详解
|
2月前
|
C#
C#学习系列相关之多线程(四)----async和await的用法
C#学习系列相关之多线程(四)----async和await的用法
|
11月前
|
JavaScript 前端开发
JS引擎的执行机制event loop
JS引擎的执行机制event loop
50 0
|
JavaScript
彻底理解sync的用法
彻底理解sync的用法
143 0
|
小程序 调度
一文掌握多线程并发中 Thread 类 yield 方法具体作用
一文掌握多线程并发中 Thread 类 yield 方法具体作用
304 0
一文掌握多线程并发中 Thread 类 yield 方法具体作用
|
安全 Java
Synchronize 关键字原理
众所周知 Synchronize 关键字是解决并发问题常用解决方案,有以下三种使用方式: 同步普通方法,锁的是当前对象。 同步静态方法,锁的是当前 Class 对象。 同步块,锁的是 {} 中的对象。