同步方法里面可以调用非同步方法
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 2020not synchronized methodThu Oct 29 13:43:37 CST 2020synchronized methodThu Oct 29 13:43:37 CST 2020not synchronized methodThu Oct 29 13:43:37 CST 2020synchronized methodThu Oct 29 13:43:37 CST 2020not synchronized methodThu Oct 29 13:43:37 CST 2020synchronized methodThu Oct 29 13:43:37 CST 2020not synchronized methodThu Oct 29 13:43:37 CST 2020synchronized methodThu Oct 29 13:43:37 CST 2020not synchronized methodThu Oct 29 13:43:37 CST 2020synchronized methodThu Oct 29 13:43:37 CST 2020not synchronized methodThu Oct 29 13:43:37 CST 2020synchronized methodThu Oct 29 13:43:37 CST 2020not synchronized methodThu Oct 29 13:43:37 CST 2020synchronized methodThu Oct 29 13:43:37 CST 2020not synchronized methodThu Oct 29 13:43:37 CST 2020synchronized methodThu Oct 29 13:43:37 CST 2020not synchronized methodThu Oct 29 13:43:37 CST 2020synchronized methodThu Oct 29 13:43:37 CST 2020not 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 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020synchronized methodThu Oct 29 13:44:28 CST 2020not synchronized methodThu Oct 29 13:44:28 CST 2020