synchronized是Java并发中最常见的关键字之一,使用锁保证线程间同步,下面介绍synchronized相关内容。
synchronized的三种用法
synchronized主要有三种用法,分别是修饰普通方法、静态方法和代码块,下面用代码分别演示一下三种用法。
修饰普通方法
synchronized修饰普通方法作用于对象实例,进入同步代码前获得当前对象实例的锁。
public class SynchronizedDemo {
public static void main(String[] args) {
MyRunnable r = new MyRunnable();
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
t1.start();
t2.start();
}
}
class MyRunnable implements Runnable {
//修饰普通方法
public synchronized void fun() {
try {
System.out.println("fun()");
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
public void run

本文详细介绍了Java中的关键字`synchronized`,包括其三种用法(修饰普通方法、静态方法和代码块),以及其底层原理和优化机制,如适应性自旋锁、锁消除、锁粗化、偏向锁和轻量级锁。同时,分析了`synchronized`如何保证并发的原子性、可见性和有序性。
最低0.47元/天 解锁文章

2151

被折叠的 条评论
为什么被折叠?



