JAVA同時、同期ロック性能テスト
5461 ワード
テストは主に運行時間差から現れ、データ量が大きいほど、時間差が明らかになり、例は以下の通りである.
メソッドにsynchronizedが追加されていない実行結果は次のとおりです.
time1:1429805281187 time2:1429805281187time:0-->75809
メソッドsynchronized実行結果の追加:
time1:1429805416628 time2:1429805416645time:17-->100000
1 package com.xt.thinks21_2;
2
3 /**
4 *
5 *
6 * @author Administrator
7 *
8 */
9 public class SynchronizedTimeTest {
10 public volatile int inc = 0;
11
12 public void increase() {
13 inc++;
14 }
15
16 public static void main(String[] args) {
17 final SynchronizedTimeTest test = new SynchronizedTimeTest();
18 for (int i = 0; i < 10; i++) {
19 new Thread() {
20 public void run() {
21 for (int j = 0; j < 10000; j++)
22 test.increase();
23 };
24 }.start();
25 }
26 Long time1 = System.currentTimeMillis();
27 while (Thread.activeCount() > 1) {
28 //
29 Thread.yield();
30 }
31 Long time2 = System.currentTimeMillis();
32 System.out.println("time1:" + time1 + " time2:" + time2);
33 Long timeDiff = time2 - time1;
34 System.out.println("time:" + timeDiff + "-->" + test.inc);
35 }
36 }
メソッドにsynchronizedが追加されていない実行結果は次のとおりです.
time1:1429805281187 time2:1429805281187time:0-->75809
メソッドsynchronized実行結果の追加:
time1:1429805416628 time2:1429805416645time:17-->100000