olá pessoas. Desculpe a minha ignorancia em threads . . . meu caso é o seguinte:
Tenho uma aplicação onde preciso inserir muitas informaçoes em meu banco, portanto preciso usar thread para não travar a GUI da minha aplicação.
Ate ai tudo bem . . . crio a classe que estende Thread sobrescrevo o metodo run(), porem quando estancio minha classe e dou um .start(), ele pula todo o codigo condicionado ( if() )
porem se eu executo o mesmo codigo fora da thread, ou seja dentro da mesma thread da main o codigo roda certinho. Segue o meu codigo pra vcs darem uma olhada.
<code>
<b>class </b>Salvar <b>extends </b>Thread{
<a class="mention" href="/u/override">@Override</a>
<b>public </b><b>void </b>run() {
//Aqui meu codigo . . .
modelo.Medico medico = <b>new </b>modelo.Medico();
modelo.Agenda agenda = <b>new </b>modelo.Agenda();
List list = <b>new </b>ArrayList();
List data = <b>new </b>ArrayList();
<b>if </b>(jR_Segunda.isSelected()) {
list.add(1);
}
<b>try </b>{
SimpleDateFormat formatter = <b>new </b>SimpleDateFormat(“kk:mm”);
String hora1 = jSpinner1.getValue().toString().substring(11, 16);//pega os valores do Spinner
(. . .)
Date d1 = formatter.parse(hora1); //transforma as strings em date
(. . .)
<b>try </b>{
DateFormat df = <b>new </b>SimpleDateFormat(“dd/MM/yyyy”);
Date dt1 = df.parse(“01/01/2011”);
Date dt2 = df.parse(“15/01/2011”);
Calendar cal = Calendar.getInstance();
cal.setTime(dt1); //seta a data do calendario como dendo a primeira
//THREAD RODA MAS PULA O FOR NESTE PONTO//
<b>for </b>(Date dt = dt1; dt.compareTo(dt2) <= 0;) {
<b>if </b>(jR_Segunda.isSelected()) {//mostra so se for segunda
<b>if </b>(dt.getDay() == 1) {
<b>if </b>(d1 != d2) {
d1 = formatter.parse(hora1); // volta o valor da hora para a
d2 = formatter.parse(hora2);// mesma selecionada no spinner
data.removeAll(data);
data.add(formatter.format(d1)); //adiciona data 1
<b>for </b>(<b>int </b>d = 0; d1.compareTo(d2) < 0; d++) {// compara as 2 datas
agenda.setHoraI(formatter.format(d1));
<b>long </b>lng = d1.getTime();//transforma data em long
//pega o valor da combobox tempo e tranforma em multiplicador para a hora
multi = Integer.parseInt(jXC_Tempo.getSelectedItem().toString().replace(“m”, “”).replace(“i”, “”).replace(“n”, “”).replace(".", “”).replace(" “, “”));
d1.setTime(lng + 60 <em> multi </em> 1000); // adiciona o valor do tempo a hora
data.add(formatter.format(d1));//adiciona este valor ao arraylist
agenda.setData(df.format(dt));
agenda.setDia(1);
agenda.setHoraF(formatter.format(d1));
agenda.setId_medico(((modelo.Medico) jCb_Medico.getSelectedItem()).getId());
agenda.setTempo_con(jXC_Tempo.getSelectedItem().toString());
agenda.setTempo_exa(jXC_Tempo1.getSelectedItem().toString());
agenda.setDias(list.toArray().toString());
<b>if </b>(agend.inserirAgenda(agenda)) {
} <b>else </b>{
(. . .)
}
//A PARTIR DAQUI (DEPOIS DO FOR) A THREAD RODA EXECUTA O CODIGO//
JOptionPane.showMessageDialog(”");
} <b>catch </b>(ParseException ex) {
Logger.getLogger(CadastraAgenda.<b>class</b>.getName()).log(Level.SEVERE, null, ex);
}
} <b>catch </b>(Exception e) {
System.out.println(e);
}
}
}//fim de run()</code>
