Determinar ttl de uma THREAD

2 respostas
D

pessoal,

como faço pra determinar o tempo de vida de uma thread?

por exemplo: tenho um servidor UDP que espera 2 mensagens sequenciais (tive que dividi-los por que era um BufferedImage muito grande) ou seja… quando o servidor recebe essas duas mensagens ele as junta e assim eu consigo recuperar o meu BufferedImage. Bom, detalhes da implementação não interessa… quero saber se é possível determinar o tempo de vida de uma thread… ou seja… quero que se ela não tenha acabado em 10s, por exemplo, seja força-do seu FIM.
alg sabe?

valeu!!!

2 Respostas

T

Veja se você pode criar uma thread auxiliar (talvez com java.util.Timer) que depois de 10 segundos joga uma InterruptedException. Na sua thread, veja se InterruptedException realmente consegue interromper o processo de leitura. Pode ser que funcione (no Unix/Linux) mas não funcione (talvez no Windows).

quikkoo

bom, nao sou muito familiarizado com o comportamento das thread no java, mas acho q isso faz oq vc quer:

public class Classe implements Runnable
{
	private int i = 0;

	public Classe()
	{
		Timer temporizador = new Timer();
		Thread thread = new Thread(this);
		CancelaTarefa cancela = new CancelaTarefa(thread);
		int espera = 10000;

		thread.start();
		temporizador.schedule(cancela, espera);

		try
		{
			thread.join();
		}
		catch (InterruptedException e)
		{
			// ñ se preocupe com essa exceção,
			// ela deverá ocorrer propositalmente
		}

		System.out.println("i: " + i);
	}

	public void run()
	{
		for (i = 0; true; i++) {}
	}

	public static void main(String args[])
	{
		new Classe();
	}

	private class CancelaTafera extends TimerTarsk
	{
		private Thread thread;

		public CancelaTarefa(Thread thread)
		{
			this.thread = thread;
		}

		public run()
		{
			thread.interrupt();
		}
	}
}

se nao der certo, pelo menos tenta aproveitar a ideia hehehe, acho q o caminho é ± esse

flw, t+

Criado 26 de outubro de 2007
Ultima resposta 26 de out. de 2007
Respostas 2
Participantes 3