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