Hilo Swing
Publicado por Eduardo (144 intervenciones) el 06/08/2014 09:27:23
Hola a todos.
Tengo programado un hilo en java swing con swingworker y no se por qué motivo de vez en cuando da un nullpointerexception.
El hilo descarga correos electrónicos. La funcionalidad la he hecho con la librería javamail.
En el log he visto que el error lo da cuando no está procesando correos.
Incluyo el código del hilo y el error para ver si alguien me puede orientar un poco.
Gracias.
Hilo:
Error:
Tengo programado un hilo en java swing con swingworker y no se por qué motivo de vez en cuando da un nullpointerexception.
El hilo descarga correos electrónicos. La funcionalidad la he hecho con la librería javamail.
En el log he visto que el error lo da cuando no está procesando correos.
Incluyo el código del hilo y el error para ver si alguien me puede orientar un poco.
Gracias.
Hilo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
SwingWorker<Void, Void> worker;
worker = new SwingWorker<Void, Void>()
{
@Override
protected Void doInBackground() throws Exception
{
Utilidades.escribeLog("Antes bucle while1");
while(true)
{
ProcesarCorreos procesarCorreos = new ProcesarCorreos();
int minuto = Integer.parseInt(Utilidades.getProperty("minutosEsperaDescarga"));
int segundo = Integer.parseInt(Utilidades.getProperty("segundosEsperaDescarga"));
labelTiempo.setText(String.valueOf(minuto) + ":" + String.valueOf(segundo));
while(minuto != -1 & segundo != 0)
{
if(segundo == 0)
{
minuto = minuto - 1;
}
if(segundo != 0)
{
segundo = segundo - 1;
}
//Dormimos 1 seg. el hilo para ir decrementando la cuenta atras
Thread.sleep(1000);
labelTiempo.setText(String.valueOf(minuto) + ":" + String.valueOf(segundo));
}
}
}
@Override
protected void done()
{
try
{
System.out.println("----------------------------Proceso Interrumpido-----------------------------------------");
get();
}
catch(Exception e)
{
Utilidades.escribeLog("----INICIO ERROR HILO----");
Utilidades.escribeLog(e.getLocalizedMessage());
Utilidades.escribeLog(e.getMessage());
for(int i=0;i<e.getStackTrace().length;i++)
{
Utilidades.escribeLog(e.getStackTrace()[i].toString());
}
Utilidades.escribeLog("----FIN ERROR HILO----");
}
}
};
worker.execute();
Error:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
java.lang.NullPointerException
java.lang.NullPointerException
java.util.concurrent.FutureTask.report(FutureTask.java:122)
java.util.concurrent.FutureTask.get(FutureTask.java:188)
javax.swing.SwingWorker.get(SwingWorker.java:602)
csiloperacionesedi.interfaz.FrmCSILOperaciones$1.done(FrmCSILOperaciones.java:86)
javax.swing.SwingWorker$5.run(SwingWorker.java:737)
javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:832)
sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:842)
javax.swing.Timer.fireActionPerformed(Timer.java:312)
javax.swing.Timer$DoPostEvent.run(Timer.java:244)
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
java.awt.EventQueue.access$200(EventQueue.java:103)
java.awt.EventQueue$3.run(EventQueue.java:694)
java.awt.EventQueue$3.run(EventQueue.java:692)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Valora esta pregunta


0