12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import java.util.concurrent.*;
- public class TestSynchronized {
- public static void main(String[] args) throws Exception {
- ExecutorService executor = Executors.newCachedThreadPool();
- SyncSample ss = new SyncSample();
- executor.execute(() -> ss.func1());
- executor.execute(() -> ss.func1());
- Thread.sleep(100);
- executor.execute(() -> ss.func2());
- executor.execute(() -> ss.func2());
- Thread.sleep(100);
- SyncSample ss2 = new SyncSample();
- executor.execute(() -> ss.func3());
- executor.execute(() -> ss2.func3());
- executor.shutdown();
- }
- }
- class SyncSample {
- public void func1() {
- System.out.println("Before sync this");
- try {
- Thread.sleep(10);
- } catch (Exception e) {
- e.printStackTrace();
- }
- synchronized (this) {
- for (int i = 0; i < 5; i++)
- System.out.println(i);
- }
- }
- public synchronized void func2() {
- System.out.println("Before sync method");
- try {
- Thread.sleep(10);
- } catch (Exception e) {
- e.printStackTrace();
- }
- for (int i = 0; i < 5; i++)
- System.out.println(i);
- }
- public void func3() {
- System.out.println("Before sync class");
- try {
- Thread.sleep(10);
- } catch (Exception e) {
- e.printStackTrace();
- }
- synchronized (SyncSample.class) {
- for (int i = 0; i < 5; i++)
- System.out.println(i);
- }
- }
- }
|