1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| package com.yibo.modules.empi;
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;
public class SynchronizedTest { private static SynchronizedTest synchronizedTest = new SynchronizedTest();
private Boolean flag = true;
private SynchronizedTest() {
}
public static SynchronizedTest getInstance() { return synchronizedTest; }
public void test() { synchronized (flag) { if (flag) { flag = false; ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
singleThreadExecutor.execute(() -> { try { for (int i = 0; i < 3; i++) { final int index = i; System.out.println(index); Thread.sleep(1000); } } catch (InterruptedException e) { e.printStackTrace(); } finally { flag = true; } });
} else { System.out.println("正在执行"); } } }
public static void main(String[] args) { getInstance().test(); try { Thread.sleep(1000); getInstance().test(); Thread.sleep(2000); getInstance().test(); Thread.sleep(4000); getInstance().test(); } catch (InterruptedException e) { e.printStackTrace(); } } }
|