Usando hilos para pintar panel en java.

Estoy escribiendo un programa que tiene una serie de puntos de vista diferentes. Uno de los cuales es bastante intensivo en gráficos (muestra un gráfico interconectado). Otros simplemente muestran diagramas pequeños pero complejos.

Estoy encontrando que el tiempo de pintura para la vista principal es bastante largo (incluso solo para pintar el área actualmente visible) y mientras se pinta, el resto de la interfaz se vuelve muy lento.

Mi pregunta es esta: ¿puedo crear un nuevo hilo para manejar la pintura? Y, de ser así, resultará en un aumento de rendimiento, mi sospecha es que no lo hará. He probado lo siguiente:

creando un ThreadPaintablePanel de clases abstractas, que heredan mis vistas complejas.

public abstract class ThreadPaintablePanel extends JPanel{
 private Thread painter;
 public abstract void paintThread(Graphics g);

 protected void callPaintThread(Graphics g){
   if(painter != null){
     painter.interrupt();
   }
   painter = new Thread(new PaintRunnable(this, g));
   painter.start();
 }
} 

Luego en mis vistas complicadas mipaintComponent El método es simplemente:super.callPaintThread(g);

Lo anuladopaintThread El método contiene todo mi código de pintura. Sin embargo esto da lugar a paneles sin pintar. ¿Me he perdido algo obvio?

Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta