Connecting Tech Pros Worldwide Forums | Help | Site Map

why does this program not end?

andthen
Guest
 
Posts: n/a
#1: Jul 18 '05
I read the following in the Thread API:

When a Java Virtual Machine starts up, there is usually a single non-daemon
thread (which typically calls the method named main of some designated
class). The Java Virtual Machine continues to execute threads until either
of the following occurs:
- The exit method of class Runtime has been called and the security manager
has permitted the exit operation to take place.
- All threads that are not daemon threads have died, either by returning
from the call to the run method or by throwing an exception that propagates
beyond the run method.

In the program below I have two Threads, the first thread reaches the end of
main() and the second thread reaches the end of run() because I see all of
the print statements. But the program doesn't terminate (I have to kill it
with Control + c) and I'm wondering why that is.

public class Test {
public static void main(String[] args) throws Exception {
Test2 h = new Test2();
System.out.println("before start");
h.start();
System.out.println("after start");
}
}


public class Test2 extends Thread {
public void run() {
System.out.println("starting run");
System.out.println("ending run");
}
}



Raymond DeCampo
Guest
 
Posts: n/a
#2: Jul 18 '05

re: why does this program not end?


andthen wrote:[color=blue]
> But the program doesn't terminate (I have to kill it
> with Control + c) and I'm wondering why that is.
>
> public class Test {
> public static void main(String[] args) throws Exception {
> Test2 h = new Test2();
> System.out.println("before start");
> h.start();
> System.out.println("after start");
> }
> }
>
>
> public class Test2 extends Thread {
> public void run() {
> System.out.println("starting run");
> System.out.println("ending run");
> }
> }
>[/color]

This program works as expected for me; it must be a bug in your JVM if
it does not work properly. I'm on linux using:

$ java -version
java version "1.4.2_04"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05)
Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed mode)


HTH,
Ray

--
XML is the programmer's duct tape.
IchBin
Guest
 
Posts: n/a
#3: Jul 18 '05

re: why does this program not end?


andthen wrote:[color=blue]
> I read the following in the Thread API:
>
> When a Java Virtual Machine starts up, there is usually a single non-daemon
> thread (which typically calls the method named main of some designated
> class). The Java Virtual Machine continues to execute threads until either
> of the following occurs:
> - The exit method of class Runtime has been called and the security manager
> has permitted the exit operation to take place.
> - All threads that are not daemon threads have died, either by returning
> from the call to the run method or by throwing an exception that propagates
> beyond the run method.
>
> In the program below I have two Threads, the first thread reaches the end of
> main() and the second thread reaches the end of run() because I see all of
> the print statements. But the program doesn't terminate (I have to kill it
> with Control + c) and I'm wondering why that is.
>
> public class Test {
> public static void main(String[] args) throws Exception {
> Test2 h = new Test2();
> System.out.println("before start");
> h.start();
> System.out.println("after start");
> }
> }
>
>
> public class Test2 extends Thread {
> public void run() {
> System.out.println("starting run");
> System.out.println("ending run");
> }
> }
>
>[/color]

Also this program works as expected for me; I'm on Window XP SP 2 using:

java -version
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)

Thanks in Advance...
IchBin
__________________________________________________ ________________________

'The meeting of two personalities is like the contact of two chemical
substances:
if there is any reaction, both are transformed.'
- Carl Gustav Jung, (1875-1961), psychiatrist and psychologist
Closed Thread