Issue #4 - Fix lazy initialization of static field

* Make the lazy initialization synchronized.
* Add comments when lazy initialization is safe
Issue #4 - Use non-static attributes for multithreaded safe use

* Avoid a static DateFormat attribute.
* Use non-static fields to avoid potential multithreading bugs.
Issue #4 - Handle NullPointerException possible case
Issue #4 - Use Object as a sync locker.

* Avoid using Long, since it could be cached and shared, and the code
could be synchronising on the same object as other, unrelated code,
leading to unresponsiveness and possible deadlock.