Thread.stop()
Mo DeJong
kaffe@rufus.w3.org
Mon, 22 May 2000 11:30:32 -0700 (PDT)
I was under the impression that methods like Thread.stop() were
removed from the JDK or replaced with no-ops. I seem to remember
that they were never implemented in Netscape's JVM. The whole
concept of stoping a thread seems like a bad idea, a thread
should expire due to natural causes.
Here are some notes about it from the Sun developer site.
http://developer.java.sun.com/developer/bugParade/bugs/4187649.html
http://developer.java.sun.com/developer/bugParade/bugs/4248898.html
Mo Dejong
Red Hat Inc.
On 22 May 2000, Jason Baker wrote:
>
> Archie Cobbs <archie@whistle.com> writes:
>
> > Email me a simple test case and I'll run it under both kaffe and JDK 1.2.
>
> Weird. Blackdown 1.2.2 doesn't seem to asynchronously stop threads at
> all, while jdk 1.1.7 can do it some of the time. Neither one seems to
> throw an exception with a stack trace at all.
>
> Jason
> ------------------------------------------------------------------------------
> 1.2.2:
> nephi(53) java Die
> sleeper started
> doing it...
> loop started
> caught an error
> java.lang.Error: throwing from main
> done
> doing it...
> ^C
> ------------------------------------------------------------------------------
> 1.1.7:
> nephi(57) java Die
> sleeper started
> doing it...
> loop started
> caught an error
> java.lang.Error: throwing from main
> done
> doing it...
> ^C
> nephi(59) java Die 100
> sleeper started
> doing it...
> loop started
> caught an error
> java.lang.Error: throwing from main
> done
> doing it...
> caught an error
> java.lang.Error: throwing from main
> done
> ------------------------------------------------------------------------------
> patched kaffe:
> sleeper starteddoing it...
>
> loop started
> caught an error
> java.lang.Error: throwing from main
> at java.lang.Thread.waitOn(Thread.java:475)
> at java.lang.Thread.sleep(Thread.java:364)
> at Die$1.doIt(Die.java:24)
> at Die.run(Die.java:7)
> done
> doing it...
> caught an error
> java.lang.Error: throwing from main
> at Die.run(Die.java:7)
> done
> ------------------------------------------------------------------------------
> public abstract class Die extends Thread {
> abstract void doIt();
>
> public void run()
> {
> System.err.println("doing it...");
> try { doIt(); }
> catch (Error e) {
> System.err.println("caught an error");
> e.printStackTrace(System.err);
> }
> System.err.println("done");
> }
>
> static public void main(String[] args)
> throws InterruptedException
> {
> int startup = 1000;
> if (args.length > 0)
> startup = Integer.parseInt(args[0]);
>
> Thread u = new Die() {
> void doIt() {
> try { Thread.sleep(300000); }
> catch (InterruptedException _) { }
> }
> };
> u.start();
> System.err.println("sleeper started");
> Thread.sleep(startup);
> u.stop(new Error("throwing from main"));
>
> Thread t = new Die() {
> void doIt() { while (true) ; }
> };
> t.start();
> System.err.println("loop started");
> Thread.sleep(startup);
> t.stop(new Error("throwing from main"));
> }
> }
>
>
>