同步方法里面可以调用非同步方法
public class T1 {
// 示例演示同步方法和非同步方法同时调用
synchronized void m() {
System.out.println("synchronized method" + new Date());
n();
}
void n() {
System.out.println("not synchronized method" + new Date());
}
public static void main(String[] args) throws InterruptedException {
CountDownLatch start = new CountDownLatch(1);
CountDownLatch end = new CountDownLatch(10);
T1 t = new T1();
for (int i = 0; i < 10; i++) {
new Thread(() -> {
try {
start.await();
t.m();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
end.countDown();
}
}).start();
}
start.countDown();
end.await();
}
}
输出结果:
synchronized methodThu Oct 29 13:43:37 CST 2020
not synchronized methodThu Oct 29 13:43:37 CST 2020
synchronized methodThu Oct 29 13:43:37 CST 2020
not synchronized methodThu Oct 29 13:43:37 CST 2020
synchronized methodThu Oct 29 13:43:37 CST 2020
not synchronized methodThu Oct 29 13:43:37 CST 2020
synchronized methodThu Oct 29 13:43:37 CST 2020
not synchronized methodThu Oct 29 13:43:37 CST 2020
synchronized methodThu Oct 29 13:43:37 CST 2020
not synchronized methodThu Oct 29 13:43:37 CST 2020
synchronized methodThu Oct 29 13:43:37 CST 2020
not synchronized methodThu Oct 29 13:43:37 CST 2020
synchronized methodThu Oct 29 13:43:37 CST 2020
not synchronized methodThu Oct 29 13:43:37 CST 2020
synchronized methodThu Oct 29 13:43:37 CST 2020
not synchronized methodThu Oct 29 13:43:37 CST 2020
synchronized methodThu Oct 29 13:43:37 CST 2020
not synchronized methodThu Oct 29 13:43:37 CST 2020
synchronized methodThu Oct 29 13:43:37 CST 2020
not synchronized methodThu Oct 29 13:43:37 CST 2020
同步方法和非同步方法可同时调用
public class T1 {
// 示例演示同步方法和非同步方法同时调用
synchronized void m() {
System.out.println("synchronized method" + new Date());
}
void n() {
System.out.println("not synchronized method" + new Date());
}
public static void main(String[] args) throws InterruptedException {
CountDownLatch start = new CountDownLatch(1);
CountDownLatch end = new CountDownLatch(10);
T1 t = new T1();
for (int i = 0; i < 10; i++) {
new Thread(() -> {
try {
start.await();
t.m();
t.n();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
end.countDown();
}
}).start();
new Thread(() -> {
try {
start.await();
t.m();
t.n();
} catch (Exception e) {
e.printStackTrace();
} finally {
end.countDown();
}
}).start();
}
start.countDown();
end.await();
}
}
输出结果
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020
synchronized methodThu Oct 29 13:44:28 CST 2020
not synchronized methodThu Oct 29 13:44:28 CST 2020