Fix/3.x/issue 2721

Issue link: https://github.com/hazelcast/hazelcast/issues/2721

Issue was about in some cases, classloader of caller side can be null (means that caller class is loaded by bootloader such as core java classes) and classloader of current thread may be null.

To solve this issue, try to use classloader of current class and if it is null (this might not be possible) use system classloader.
Hi @mdogan,

I have looked the code and remembered that why I didn't make "innerRun" abstract.
I though that, if there is a runnable passed through constructor, implementing "innerRun" is not needed since runnable can be already executed by "run" method of "java.lang.Thread". If our thread will handle running in a custom way (there is no runnable to delegate), I think in that case "innerRun" method can be overriden. In addition this is the reason why I didn't make "HazelcastManagedThread" abstract.

WDYT ?