JOptionPane+Thread

2 respostas
emerson_web

Pessoal, estou com um problema com thread!
Alguem ai sabe como eu faço pra criar uma thread usando JOptionPane?
Tipo, eu terei que dar um nome para thread e o tempo de execução…
isso iria gerar a thread com o nome especificado e o tempo de execução
ela iria start uma thread com o tempo de execução numa tabela

Alguem pode me dar dicas?

2 Respostas

V

Olá,

vou te mandar um exemplo de como você pode fazer isso, usando apenas Threads. Mas em java existe uma classe chamada Timer que poderia fazer isso que você quer.

import javax.swing.JOptionPane;

public class Guj {
	public static void main(String[] args) {
	
		final String nome = JOptionPane
				.showInputDialog("qual será o nome da thread?");
		final long tempo = Long
				.parseLong(JOptionPane
						.showInputDialog("por quantos milisegundos a thread irá rodar?"));

		//essa aqui será a sua thread principal, onde você fará alguma coisa
		
		final Thread t1 = new Thread(new Runnable() {

			@Override
			public void run() {
				//voce pode fazer alguma outra coisa aqui
				
				int i = 0;
				while (true) {
					System.out.println(i++);
				}

			}
		});

		t1.setName(nome);

		/*essa Thread aqui é auxiliar, tudo o que está sendo feito aqui poderia ser feito
		 * diretamente no main, mas isso travaria o fluxo do programa
		 * 
		 */
		
		Thread timeControl = new Thread(new Runnable() {

			@Override
			public void run() {
				// inicia a Thread principal
				t1.start();
				try {
					// espera o tempo pelo qual a Thread principal rodará
					Thread.sleep(tempo);
				} catch (InterruptedException e) {
					// você pode fazer alguma outra coisa aqui pra tratar a exceção
					e.printStackTrace();
				}
				//essa linha é o ponto fraco do exemplo, pois este método agora é deprecated
				//força a parada da Thread Principal
				t1.stop();

			}
		});
		
                //Inicia a Thread Auxiliar
		timeControl.start();

                //continue com o fluxo principal do programa

	}

}

O ponto fraco do exemplo é que ele usa o método stop(), método que possui alguns problemas e por isso é um método deprecated.

emerson_web

Valeu Victor, acho que vai dar certo aqui… obrigado pela ajuda…

Se funcionar eu posto aqui pra galera, pode ser a duvida de outros também…

Obrigado!

Criado 20 de maio de 2011
Ultima resposta 20 de mai. de 2011
Respostas 2
Participantes 2