Я мало работал с SWT, но кажется, что SWT строго запретит доступ к объекту SWT в потоке без пользовательского интерфейса.Вы можете поставить в очередь запрос на общение с объектом на SWT.
Эта ссылка объясняет это лучше
В примере предлагается использовать syncExec
display.syncExec(
new Runnable() {
public void run(){
label.setText(text);
}
});
Это, я могу предположить, поставит в очередь Runnable наосновной поток пользовательского интерфейса SWT и, следовательно, доступ будет законным.
Примечание: я снова перечитал ссылку, в итоге syncExec заморозит ваш Swing EDT.Если вы вызываете syncExec, он выбросит Runnable в очередь SWT и будет ждать его завершения.Вы можете посмотреть на asyncEvent, чтобы бросить runnable в очередь и продолжить работу.