Quite possible. Of course it's quite possible. Not only you can use multiple exclusion (lock statements, and the like), you also can use some static members (essentially, properties and fields, as static methods are widely used and don't present problem if they work only on stack).
But this is a very, vary bad idea. Using stack is the way to isolate threads. Static fields and properties are not needed even if you want to share data between threads. Please see my past answer:
Change parameters of thread (producer) after it is started[
^],
Making Code Thread Safe[
^],
Running exactly one job/thread/process in webservice that will never get terminated (asp.net)[
^].
The main idea is: you need to synchronize threads only if they really need to communicate via some shared data or conveyors of data. In other cases,
best synchronization is no synchronization. And this comes automatically if you isolate thread data and use more of the stack.
—SA