4.3原子性-锁
Synchronized
1.修饰对象及作用范围
2.无Synchronized修饰的代码
实验代码
package com.moluo.concurrency.sync;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class NoSynchronizedExample {
public static void test(String tag) {
for (int i = 0; i < 10; i++) {
System.out.println("tag: " + tag + ", output:" + i);
}
}
public static void main(String[] args) {
// 案例一:1个对象,2个线程,在运行程序过程中,执行权可能被夺走
NoSynchronizedExample example = new NoSynchronizedExample();
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.execute(() -> {
example.test("......");
});
executorService.execute(() -> {
example.test(">>>>>>");
});
executorService.shutdown();
}
}输出结果
结论
3.修饰代码块:大括号括起来的代码,作用于调用的对象
调用的对象实验代码
案例一输出结果
案例二输出结果
结论
4.修饰方法:整个方法,作用于调用的对象
调用的对象实验代码
案例一输出结果
案例二输出结果
结论
5.修饰静态方法:整个静态方法,作用于所有对象
所有对象实验代码
案例一输出结果
案例二输出结果
结论
6.修饰类:括号括起来的部分,作用于所有对象
所有对象实验代码
案例一输出结果:
案例二输出结果:
结论
Last updated