Static variable should be changed inside static syncronised methods in order to be thread-safe. Two threads that access a static syncronized method, will always block each other, regardless if they are using the same instance or two different instances.
SCJP 5.0 .... 97%
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com