面试官:对并发熟悉吗?说说Synchronized及实现原
理
Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一
种方法。
Synchronized的作用主要有三个:
确保线程互斥的访问同步代码
保证共享变量的修改能够及时可见
有效解决重排序问题。
从语法上讲,Synchronized总共有三种用法:
修饰普通方法
修饰静态方法
修饰代码块
接下来我就通过几个例子程序来说明一下这三种使用方式(为了便于比较,三
段代码除了Synchronized的使用方式不同以外,其他基本保持一致)。
1、没有同步的情况:
代码段一:
package com.paddx.test.concurrent;
public class SynchronizedTest {
public void method1(){
System.out.println("Method 1 start");
try {
System.out.println("Method 1 execute");
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Method 1 end");