it's worth reading Allen Holub on threads. he makes two points: i) they ain't OO, ii) they don't really work. if threads are going to be re-done, make 'em OO. i would add, make them thread safe by default; that is, the interpreter knows where a member is. it also knows which thread is using it. it can also, if it doesn't already, keep track of how many (and by name) threads reference the member. if threads were OO, it would just be a matter of the coder to say,
Thread myThread = new Thread(myObject);
myThread.start(); // or run() or fred()
the interpreter would make sure that all access to members is thread safe. end of story. this behavior could be overridden.