code: public T get() {
          while (true) {
              Thread t = threadVar.get();
              if (t == null) {
                  return getValue();
              }
              try {
                  t.join();
              } catch (InterruptedException e) {
                  Thread.currentThread().interrupt(); // propagate
                  return null;
              }
          }
      }
docs: Return the value created by the <code>construct</code> method. Returns
  null if either the constructing thread or the current thread was
  interrupted before a value was produced.
  
  @return the value created by the <code>construct</code> method