/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.concurrent.atomic.AtomicInteger;
/* Name of the class has to be "Main" only if the class is public. */
class AtomicIntegerTest {
public static void main
(String[] args
) { int n = 200_000_000;
int i = 0;
long start
= System.
currentTimeMillis(); while (i < n) {
i++;
}
long end
= System.
currentTimeMillis(); System.
out.
println("int: " + (end
- start
) + "ms");
start
= System.
currentTimeMillis(); while (in < n) {
in++;
}
end
= System.
currentTimeMillis(); System.
out.
println("Integer: " + (end
- start
) + "ms");
AtomicInteger ai = new AtomicInteger(0);
start
= System.
currentTimeMillis(); while (ai.get() < n) {
ai.incrementAndGet();
}
end
= System.
currentTimeMillis(); System.
out.
println("AtomicInteger: " + (end
- start
) + "ms"); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljSW50ZWdlcjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBBdG9taWNJbnRlZ2VyVGVzdCB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgaW50IG4gPSAyMDBfMDAwXzAwMDsKICAgICAgICBpbnQgaSA9IDA7CiAgICAgICAgbG9uZyBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwogICAgICAgIHdoaWxlIChpIDwgbikgewogICAgICAgICAgICBpKys7CiAgICAgICAgfQogICAgICAgIGxvbmcgZW5kID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpbnQ6ICIgKyAoZW5kIC0gc3RhcnQpICsgIm1zIik7CgogICAgICAgIEludGVnZXIgaW4gPSAwOwogICAgICAgIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CiAgICAgICAgd2hpbGUgKGluIDwgbikgewogICAgICAgICAgICBpbisrOwogICAgICAgIH0KICAgICAgICBlbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkludGVnZXI6ICIgKyAoZW5kIC0gc3RhcnQpICsgIm1zIik7CgogICAgICAgIEF0b21pY0ludGVnZXIgYWkgPSBuZXcgQXRvbWljSW50ZWdlcigwKTsKICAgICAgICBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwogICAgICAgIHdoaWxlIChhaS5nZXQoKSA8IG4pIHsKICAgICAgICAgICAgYWkuaW5jcmVtZW50QW5kR2V0KCk7CiAgICAgICAgfQogICAgICAgIGVuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQXRvbWljSW50ZWdlcjogIiArIChlbmQgLSBzdGFydCkgKyAibXMiKTsKICAgIH0KfQ==