aboutsummaryrefslogtreecommitdiff
path: root/website2/usageExamples/GetterLazyExample_post.jpage
diff options
context:
space:
mode:
Diffstat (limited to 'website2/usageExamples/GetterLazyExample_post.jpage')
-rw-r--r--website2/usageExamples/GetterLazyExample_post.jpage26
1 files changed, 26 insertions, 0 deletions
diff --git a/website2/usageExamples/GetterLazyExample_post.jpage b/website2/usageExamples/GetterLazyExample_post.jpage
new file mode 100644
index 00000000..5f34c43e
--- /dev/null
+++ b/website2/usageExamples/GetterLazyExample_post.jpage
@@ -0,0 +1,26 @@
+public class GetterLazyExample {
+ private final java.util.concurrent.AtomicReference<java.lang.Object> cached = new java.util.concurrent.AtomicReference<java.lang.Object>();
+
+ public double[] getCached() {
+ java.lang.Object value = this.cached.get();
+ if (value == null) {
+ synchronized(this.cached) {
+ value = this.cached.get();
+ if (value == null) {
+ final double[] actualValue = expensive();
+ value = actualValue == null ? this.cached : actualValue;
+ this.cached.set(value);
+ }
+ }
+ }
+ return (double[])(value == this.cached ? null : value);
+ }
+
+ private double[] expensive() {
+ double[] result = new double[1000000];
+ for (int i = 0; i < result.length; i++) {
+ result[i] = Math.asin(i);
+ }
+ return result;
+ }
+}