1 |
dl |
1.2 |
/* |
2 |
|
|
* Written by Doug Lea with assistance from members of JCP JSR-166 |
3 |
|
|
* Expert Group and released to the public domain, as explained at |
4 |
|
|
* http://creativecommons.org/licenses/publicdomain |
5 |
|
|
*/ |
6 |
dl |
1.1 |
|
7 |
|
|
class Sync100M { |
8 |
|
|
public static void main(String[] args) throws Exception { |
9 |
jsr166 |
1.4 |
int x = loop((int) System.nanoTime(), 100000); |
10 |
dl |
1.1 |
x = loop(x, 100000); |
11 |
|
|
x = loop(x, 100000); |
12 |
|
|
long start = System.nanoTime(); |
13 |
|
|
x = loop(x, 100000000); |
14 |
|
|
if (x == 0) System.out.print(" "); |
15 |
|
|
long time = System.nanoTime() - start; |
16 |
jsr166 |
1.4 |
double secs = (double) time / 1000000000.0; |
17 |
dl |
1.1 |
System.out.println("time: " + secs); |
18 |
|
|
start = System.nanoTime(); |
19 |
|
|
x = loop(x, 100000000); |
20 |
|
|
if (x == 0) System.out.print(" "); |
21 |
|
|
time = System.nanoTime() - start; |
22 |
jsr166 |
1.4 |
secs = (double) time / 1000000000.0; |
23 |
dl |
1.1 |
System.out.println("time: " + secs); |
24 |
|
|
|
25 |
|
|
} |
26 |
|
|
|
27 |
|
|
static final Object obj = new Object(); |
28 |
jsr166 |
1.3 |
|
29 |
dl |
1.1 |
static int loop(int x, int iters) { |
30 |
|
|
for (int i = iters; i > 0; --i) { |
31 |
jsr166 |
1.5 |
synchronized (obj) { |
32 |
dl |
1.1 |
x = x * 134775813 + 1; |
33 |
|
|
} |
34 |
|
|
} |
35 |
|
|
return x; |
36 |
|
|
} |
37 |
jsr166 |
1.3 |
|
38 |
dl |
1.1 |
} |