Anyone know any good articles that talk about static members and
threads. I want to know if I declare any members of a class as static,
can it be seen in other threads, or how they might be seen across
threads, is the vm dependent, or if I shouldn't do this at all ...
Your question doesn't make sense. Threads other than which?
Anyway, you need to recognize that classes are scoped to the VM(*), and
that threads are are largely an orthogonal issue. I tend to frown on
non-final static fields in general, and especially in an intentionally
multi-threaded context, but it has nothing to do with lack of
visibility. Quite the opposite, in fact.
If you are programming with threads then you will simplify your life and
reduce your bug count by reducing the number of shared variables as much
as possible. Static fields are particularly nasty in this respect
because not only are they potentially shared by any thread in the VM,
but also *you have no way to control the sharing*. Contrast instance
variables, where you can control sharing by keeping a rein on references
to their containing object. Even better vis a vis threading are local
variables and method arguments, which are guaranteed to not be visible
to exactly one thread.
(*)Yes, I know about ClassLoaders, but they're not much relevant to the
question at hand.