Static blocks will only be executed once, by the first thread that accesses the class so they're pretty safe.
As to fields etc., it's not a matter of static vs. instance, it's a matter of how you use them. If a variable can be changed by more than one thread that will run in parallel then you have to think about the possible sequences of events. For example it's not safe to increment a variable, because between picking up the old value and putting back the +1 value some other thread might do the same thing. The result would be only one of the increments would happen.
Where there are problems you'll have to think about using synchronized methods or blocks.
Variables that don't change are fine. Local variables are fine.