@@ -0,0 +1,1294 @@
+package com.javalearning.concurrent;%0A%0Aimport org.apache.commons.lang3.concurrent.ConcurrentException;%0Aimport org.apache.commons.lang3.concurrent.LazyInitializer;%0A%0A/**%0A * Created by renqun.yuan on 2015/11/6.%0A */%0Apublic class LazyInitializerExample %7B%0A    public static void main(String%5B%5D args) throws ConcurrentException %7B%0A        LazyInitializerTest lazyInitializerTest = new LazyInitializerTest();%0A%0A        System.out.println(lazyInitializerTest.get());%0A        System.out.println(lazyInitializerTest.get());%0A%0A    %7D%0A%0A   static class LazyInitializerTest extends LazyInitializer%3CString%3E%7B%0A%0A        /**%0A         * Creates and initializes the object managed by this %7B@code%0A         * LazyInitializer%7D. This method is called by %7B@link #get()%7D when the object%0A         * is accessed for the first time. An implementation can focus on the%0A         * creation of the object. No synchronization is needed, as this is already%0A         * handled by %7B@code get()%7D.%0A         *%0A         * @return the managed data object%0A         * @throws ConcurrentException if an error occurs during object creation%0A         */%0A        @Override%0A        protected String initialize() throws ConcurrentException %7B%0A            System.out.println(%22from the initialize method%22);%0A            return %22hello%22;%0A        %7D%0A    %7D%0A%7D%0A%0A%0A

add lazyInitializer