1 |
|
2 |
class Sync100M { |
3 |
public static void main(String[] args) throws Exception { |
4 |
int x = loop((int)System.nanoTime(), 100000); |
5 |
x = loop(x, 100000); |
6 |
x = loop(x, 100000); |
7 |
long start = System.nanoTime(); |
8 |
x = loop(x, 100000000); |
9 |
if (x == 0) System.out.print(" "); |
10 |
long time = System.nanoTime() - start; |
11 |
double secs = (double)time / 1000000000.0; |
12 |
System.out.println("time: " + secs); |
13 |
start = System.nanoTime(); |
14 |
x = loop(x, 100000000); |
15 |
if (x == 0) System.out.print(" "); |
16 |
time = System.nanoTime() - start; |
17 |
secs = (double)time / 1000000000.0; |
18 |
System.out.println("time: " + secs); |
19 |
|
20 |
} |
21 |
|
22 |
static final Object obj = new Object(); |
23 |
|
24 |
static int loop(int x, int iters) { |
25 |
for (int i = iters; i > 0; --i) { |
26 |
synchronized(obj) { |
27 |
x = x * 134775813 + 1; |
28 |
} |
29 |
} |
30 |
return x; |
31 |
} |
32 |
|
33 |
} |