I would say no. Unless you are handling all the synchronization, concurrent access to static resources will either throw ConcurrentModificationExceptions all over the place, or leave your data in inconsistent states. Multi-threaded programming is difficult, and can be simplified by limiting and modularizing the data the threads work with. Locks and synchronization can also lead to slowdown or deadlock in certain situations which is obviously counterproductive.
Can anyone tell me if this is good practice...?