Allora intanto mi sono spiegato sicuramente male ogni volta che lancio un calcolo inserisco in un pannello dedicato una nuova progress bar che alla fine del processo viene rimossa e questo devo farlo dai thread secondari penso...
poi per quanto riguarda invokeLater/invokeAndWait penso di aver capito che devo modificare le parti con synchronized in

codice:
javax.swing.SwingUtilities.invokeLater(new Runnable() {                @Override
                public void run() {
                    BarPanel.remove(A);
                    BarPanel.revalidate();
                    BarPanel.repaint();
                }

            });