Java

Synchronized

2018-05-28  本文已影响13人  JaedenKil
public class TestSynchronized {
    private int x = 0;
    private void printMessage(String threadName, String message, int addition) {
        System.out.println("From Thread " + threadName + " Message: " + message);
        x += addition;
        System.out.println("x = " + x);
    }

    public static void main(String[] args) {
        TestSynchronized testSynchronized = new TestSynchronized();

        Thread thread01 = new Thread() {
            @Override
            public void run() {
                for (int i = 1; i <= 3; i++) {
                    testSynchronized.printMessage("Thread 01","Round " + i, 3);
                }
            }
        };
        thread01.start();

        Thread thread02 = new Thread() {
            @Override
            public void run() {
                for (int i = 1; i <= 3; i ++) {
                    testSynchronized.printMessage("Thread 02", "Round " + i, 5);
                }
            }
        };
        thread02.start();
    }
}
From Thread Thread 01 Message: Round 1
From Thread Thread 02 Message: Round 1
x = 8
x = 3
From Thread Thread 02 Message: Round 2
x = 13
From Thread Thread 01 Message: Round 2
From Thread Thread 02 Message: Round 3
x = 16
x = 21
From Thread Thread 01 Message: Round 3
x = 24
public class TestSynchronized {
    private int x = 0;
    private synchronized void printMessage(String threadName, String message, int addition) {
        System.out.println("From Thread " + threadName + " Message: " + message);
        x += addition;
        System.out.println("x = " + x);
    }

    public static void main(String[] args) {
        TestSynchronized testSynchronized = new TestSynchronized();

        Thread thread01 = new Thread() {
            @Override
            public void run() {
                for (int i = 1; i <= 3; i++) {
                    testSynchronized.printMessage("Thread 01","Round " + i, 3);
                }
            }
        };
        thread01.start();

        Thread thread02 = new Thread() {
            @Override
            public void run() {
                for (int i = 1; i <= 3; i ++) {
                    testSynchronized.printMessage("Thread 02", "Round " + i, 5);
                }
            }
        };
        thread02.start();
    }
}
From Thread Thread 01 Message: Round 1
x = 3
From Thread Thread 01 Message: Round 2
x = 6
From Thread Thread 01 Message: Round 3
x = 9
From Thread Thread 02 Message: Round 1
x = 14
From Thread Thread 02 Message: Round 2
x = 19
From Thread Thread 02 Message: Round 3
x = 24
上一篇 下一篇

猜你喜欢

热点阅读