I don't quite get what you want to achieve and why ThreadLocal might be used.
If you want a single instance per application, you usually want some sort of Singleton
pattern. This can be implemented with synchronisation, or better with the "singleton holder" idiom (Google it). Note that you can only enforce a single instance per ClassLoader, not per JVM. If you have complex class-loading, think carefully if you're getting something good enough.
If you want a different instance per thread, ThreadLocal is a good way to achieve it. But that's not what you want, is it?