ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thomas Christen" <...@active.ch>
Subject AW: [PATCH] Wait and Available
Date Mon, 27 Nov 2000 18:08:52 GMT
> When designing this, if you would, give some though about different
> models for allowing a build to be stopped before completion. This
> includes the case where there is only one thread executing the build
> as well as the multi-thread case.

Threads should allways be stopped with Thread.interrupt(). I my self then
will handle the interruption as good as possible. According to the book
"Concurrent Programmin in Java" written by Doug Lea you could try :

class Terminator {

	// Try to kill; return true if known to be dead

	static boolean terminate(Thread t, long maxWaitToDie) {
		if (!t.isAlive()) return true; // already dead
		// phase 1 -- graceful cancellation
		t.interrupt();
		try {
			t.join(maxWaitToDie);
		}
		catch(InetrruptException e {
		}
		if (!t.isAlive()) return true; // success

		// phase 2 -- trap all security checks

		theSecurityMgr.denyAllChecksFor(t);
		try

			t.join(maxWaitToDie);
		}
		catch(InetrruptException e {
		}
		if (!t.isAlive()) return true;

		// phase 3 -- minimize damage

		t.setPriority(Thread.MIN_PRIORITY);
		return false;
	}
}

Regards
Thomas


Mime
View raw message