Interromper processos no Java

Pessoal, estou com um problema:

eu tenho uma aplicação web que manda executar uma determinada sequencia de processos, exemplo:

valida um arquivo texto, insere em um banco de dados, atualiza essas informações e etc…

problema: se o usuario quiser, ele pode cancelar esses processos …

andei pesquisando algumas formas e disseram q uma forma de fazer isso é com threads, ou wrapper … uma vez que o java não tem nenhuma maneira de recuperar pids …

estou certo ??

alguem poderia me apontar alguma solução ??

agradeço pela atenção.

vc terá um processo
e dentro desse processo pode ter várias threads
diferente do C onde vc pode criar novos processos filhos
mas se pode trabalhar com thread sim
ai caso ele queira cancelar vc destroi aquela thread pq se destruir o processo todas as threads cairão junto

[code]
public class MyThread extends Thread {

private boolean threadDone = false;

public void done() {
    threadDone = true;
}

public void run() {
    while (!threadDone) {
        // work here
        // modify common data
    }
}

}[/code]

http://www.devx.com/tips/Tip/31728

vlw pessoal

vou dar uma estudada em threads …

pozzo… bem legal essa classe…
simples e eficaz

Pessoal, tentei essa implementação que o pozzo sugeriu, só que para o meu caso não serviu …

eu preciso de algo que funcione como se fosse o kill do linux …

então imaginem que eu tenho o seguinte :


public class LancaProcedimento extends Thread{

	private static LancaProcedimento instance = null;

	private boolean threadDone = false;

	public static LancaProcedimento getInstance(){
		if(instance == null) {
			instance = new LancaProcedimento();
			
			Thread t = instance;
			t.start();
		}

		return instance;
	}

	public void parar(){
		threadDone = true;
	}


	public void run(String arquivo,br.com.oside.AdminSaudePro.service.ServiceProcedimentos.TipoArquivo tipo,Connection conn, String continuar){
		ServiceProcedimentos sp = new ServiceProcedimentos();

		while(!threadDone){

			if("nao".equals(continuar)){
				try {
					sp.rodarProcedimentosComeco(arquivo, tipo, conn);
					threadDone = true;
				} catch (ParseException e) {
					for (StackTraceElement se: e.getStackTrace()) {
						System.out.println(se);
					}
				} catch (Exception e) {
					for (StackTraceElement se: e.getStackTrace()) {
						System.out.println(se);
					}
				}
			}
			
			if("sim".equals(continuar)){
				try {
					sp.rodarProcedimentos(arquivo, tipo, conn);
					threadDone = true;
				} catch (ParseException e) {
					for (StackTraceElement se: e.getStackTrace()) {
						System.out.println(se);
					}
				} catch (Exception e) {
					for (StackTraceElement se: e.getStackTrace()) {
						System.out.println(se);
					}
				}
			}

		}

	}




}

tem esse método : sp.rodarProcedimentosComeco(arquivo, tipo, conn);

supondo que eu queira cancelar ele ( enquanto ele estiver rodando ), com esse esquema de while( true ), num funciona, pq ele só vai verificar a variavel depois que ele já tiver terminado a execução do metodo em questão …

alguem tem alguma outra idéia??

vlw

abraços