Dear all please look the following program
class Counter implements Runnable {
private int currentValue;
private
Thread worker;
public Counter(
String threadName) {
currentValue = 0;
worker = new Thread(this, threadName); // (1) Create a new thread.
System.out.println(worker);
worker.start(); // (2) Start the thread.
}
public int getValue() { return currentValue; }
public void run() { // (3) Thread entry point
try {
while (currentValue < 5) {
System.out.println(worker.getName() + ": "+currentValue++));
Thread.sleep(250); // (4) Current thread sleeps.
}
} catch (InterruptedException e) {
System.out.println(worker.getName() + " interrupted.");
}
System.out.println("Exit from thread: " + worker.getName());
}
}
public class Client {
public static void main(String[] args) {
Counter counterA = new Counter("Counter A"); // (5) Create a thread.
try {
int val;
do {
val = counterA.getValue(); // (6) Access the counter value.
System.out.println("Counter value read by main thread: " + val);
Thread.sleep(1000); // (7) Current thread sleeps.
} while (val < 5);
} catch (InterruptedException e) {
System.out.println("main thread interrupted.");
}
System.out.println("Exit from main() method.");
}
}
output from the program:
Thread[Counter A,5,main]
Counter value read by main thread: 0
Counter A: 0
Counter A: 1
Counter A: 2
Counter A: 3
Counter value read by main thread: 4
Counter A: 4
Exit from thread: Counter A
Counter value read by main thread: 5
Exit from main() method.
In the above program the output in first 2 line should be
Thread[Counter A,5,main]
Counter A: 0
because in the constructor of Counter we start the thread
Please tell me the flow.
Regards
Manju