synchronize 三大作用、三大用法

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

synchronize 的三大作用:

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

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

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

synchronize 的三大用法:

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

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

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

相关文章
|
7月前
|
Java
Java多线程基础-7:wait() 和 notify() 用法解析
这篇内容探讨了Java中的`wait()`和`notify()`方法在多线程编程中的使用。
52 0
|
程序员 调度
多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法(二)
多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法
|
前端开发 Java 程序员
多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法(一)
多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法
|
7月前
|
存储 安全 Java
【JavaEE初阶】 volatile关键字 与 wait()方法和notify()方法详解
【JavaEE初阶】 volatile关键字 与 wait()方法和notify()方法详解
|
7月前
|
安全 算法 编译器
C++中=delete的巧妙用法
C++中=delete的巧妙用法
204 0
|
存储 C++ 容器
C++ 第九节——map/set(用法+底层原理+模拟实现)
们需要知道的是,Map和Set的底层都是红黑树。
831 1
C++ 第九节——map/set(用法+底层原理+模拟实现)
|
JavaScript
热点面试题:JS 中 call, apply, bind 概念、用法、区别及实现?
热点面试题:JS 中 call, apply, bind 概念、用法、区别及实现?
|
JavaScript 前端开发
JS引擎的执行机制event loop
JS引擎的执行机制event loop
73 0
|
设计模式 数据挖掘 C++
C++并发与多线程(三)单例设计模式与共享数据分析、call_once、condition_variable使用
C++并发与多线程(三)单例设计模式与共享数据分析、call_once、condition_variable使用
140 0
|
JavaScript
彻底理解sync的用法
彻底理解sync的用法
183 0