I beg to differ. The stack is reserved for local variables in methods (both references and primitives, but not objects). Each thread gets its own stack, and stack frames are created and destroyed as methods begin and end. Anything stored in a stack is not accessible to other threads.
Static variables are stored on the heap along with all objects, but I cannot tell you precisely how. My guess is that each Class instance has a JVM-private reference an object holding its set of static fields.