Ola galera.
Eu quero ficar verificando o status de uma flag dentro de uma classe como abaixo
public class NewJFrame extends javax.swing.JFrame {
sem travar a aplicação.
Não estou conseguindo usar thread na classe e acho que é porque eu usei extends javax.swing.JFrame e não extends Thread.
Frame é uma janela. Thread é uma classe que, a princípio, nem sequer deveria ser estendida. Mas sua responsabilidade é criar uma nova thread, que rodará o código que estiver num Runnable.
Se você quer monitorar uma variável de uma janela, crie um Runnable como uma inner class interna de sua janela. Ele terá acesso a essa variável. Então, dispare uma thread que o monitore.
Se essa variável for de um tipo primitivo, não esqueça de declara-la como volatile.
Se não for, não esqueça que você só poderá modifica-la em blocos sincronizados.
Isso pq o Swing e sua thread são threads diferentes.
N
Naurjr
Valeu brother!!
Resolvi o esquema…mas surgiu outra duvida.
Thread thread1 = new Thread (this); thread1.start();
Por que não funciona sem o this?
Valeu!!
ViniGodoy
Você tem que passar no construtor da classe Thread o Runnable que ela executará. No caso, sua própria classe.
Sem isso, a classe tentará executar o run() dela mesmo, que por padrão é vazio (você pode altera-lo por extensão, o que é fortemente desaconselhado).