synchronized对静态方法加锁,锁的是当前类,synchronized对普通方法加锁,锁的是当前对象。那么在当前类加锁的情况下是否可以访问普通加锁方法呢?今天进行一个测试。
首先创建一个类:
public class DemoClass {
// 对静态方法加锁,
public synchronized static void testMethod1(String param) {
// 执行4次伟大的循环,比较耗时。
for (int i = 0; i < 4; i++) {
for (int j = 1; j <= 2100000000; j++) {
if (j == 2100000000) {
String name = Thread.currentThread().getName();
System.out.println(name + "--" + param + "--我是静态方法");
}
}
}
}
// 对普通方法加锁
public synchronized void testMethod2(String param) {
for (int i = 0; i < 4; i++) {
for (int j = 1; j <= 2100000000; j++) {
if (j == 2100000000) {