// c is an object of class C
Thread t = new Thread( c ); //
Another
Thread constructor has a 2nd argument: String threadname
t.start();
Thread[Counter A,5,main]
Main Thread: 0
Counter A: 0
Counter A: 1
Main Thread: 2
Counter A: 2
Counter A: 3
Main Thread: 4
Counter A: 4
Exit from Counter A.
Main Thread: 5
Exit from Main Thread: Counter = 5
Thread[Counter A,5,main]
Exit from Main Thread.
Counter A: 0
Counter A: 1
Counter A: 2
Counter A: 3
Counter A: 4
Exit from Counter A.
t.setPriority( t.getPriority() + 1 ); // what does this do?
Write once, run everywhere, but not necessarily with the same thread scheduling semantics :(
Thread[A,5,main]
Thread[B,5,main]
Thread[C,5,main]
Main Thread sleeping.
Thread[C,5,main]: popping
Thread[C,5,main]: waiting to pop
Thread[A,5,main]: pushing
Thread[A,5,main]: notifying after push
Thread[A,5,main]: pushing
Thread[A,5,main]: notifying after push
Thread[A,5,main]: pushing
Thread[A,5,main]: notifying after push
Thread[C,5,main]: notifying after pop
Thread[B,5,main]: pushing
Thread[B,5,main]: notifying after push
Thread[A,5,main]: pushing
Thread[A,5,main]: notifying after push
Thread[C,5,main]: popping
Thread[C,5,main]: notifying after pop
Thread[B,5,main]: pushing
Thread[B,5,main]: notifying after push
Exit from Main Thread.