Я пытаюсь что-то сделать, пока мой поток ждет метода join() все, что я хочу сделать, это изменить только имя кнопки, пока жду, но это не работает ... и я не знаю, почему вот мой ужасный код:как сделать что-то, пока вы ждете Thread.join()
if(e.getSource()==botonFiltro){
double [] datosFiltro2 = {
(Double.parseDouble(montoTextField.getText())),//0monto
(Double.parseDouble(txtPorcentaje.getText())/100),//1porcentaje
(Double.parseDouble(txtPrecio.getText())),//2precio
(Double.parseDouble(txtRango.getText())/100),//3rango
(Double.parseDouble(txtPMasDuro.getText())/100)//4pMasDuro
};
double [] datosFiltro1= {};
botonFiltro.setText("Filtrando");
HiloLanzarFiltro hilo = new HiloLanzarFiltro(programa, datosFiltro1, datosFiltro2);
Thread tFiltrando = new Thread(hilo);
tFiltrando.start();
try {
// while(tFiltrando.isAlive()){
// botonFiltro.setText("Filtrando.");
// Thread.sleep(500);
// botonFiltro.setText("Filtrando..");
// Thread.sleep(500);
// botonFiltro.setText("Filtrando...");
// Thread.sleep(500);
// }
tFiltrando.join();
} catch (InterruptedException e1) {
//
}
this.programa= hilo.getPrograma();
String[] l = new String[programa.getCompañias().size()];
int i= 0;
for(Compañia c: programa.getCompañias()){
l[i++]=c.getSymbol();
}
JListaPrincipal.setListData(l);
lblCompaiasEncontradas.setText("Compa\u00F1ias encontradas: "+programa.getCompañias().size());
botonFiltro.setText("Filtrar");
}
комментируемые линии являются «вещью», что я хотел сделать ... Спасибо.
См. Https://docs.oracle.com/javase/tutorial/uiswing/concurrency/simple.html – Fildor
Вы должны иметь возможность использовать 'join (long millis)'. – OldCurmudgeon
«Делайте что-нибудь, пока вы ждёте» - это противоречие в терминах. 'Thread.join()' - операция блокировки. Вы заблокированы. Вы ничего не можете сделать. – EJP