Я в растерянности, простое использование свингера.
Я добавил несколько простых кодов в doInBackground (), но он не выполняется, я не получаю исключения. Когда я использую отладчик, он работает как надо. ))
Может быть, у кого-то есть что-то вроде этого, или заставьте подсказать мне, как кешировать эту ошибку, или ...
Извините, код сложный. Скажите, вам нужно что-то еще или комментарии.
если я удалю "installer.setFPS (fPSCalculatorGhost.getFPS ());" - строка, все будет хорошо.
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainWindow().setVisible(true);
}
});
public MainWindow() {
initComponents();
}
private void initComponents() {
InterfaceUpdateWorker interfaceUpdate = new InterfaceUpdateWorker(
new InterfaceInfoInstallerImpl());
interfaceUpdate.setCamera(gLEventListenerImpl.getCameraGhost());
interfaceUpdate.setfPSCalculatorGhost(gLEventListenerImpl.getFPSCalculatorGhost());
interfaceUpdate.execute();
}
@Override
protected Void doInBackground() throws InterruptedException {
while(true) {
installer.setFPS(fPSCalculatorGhost.getFPS());
installer.setCameraXPosition(
cameraGhost.getCameraXPosition());
installer.setCameraYPosition(
cameraGhost.getCameraYPosition());
installer.setCameraZPosition(
cameraGhost.getCameraZPosition());
Thread.sleep(200);
}
}
public final class FPSCalculatorGhost {
private FPSCalculatorGhost() {
}
public float getFPS() {
return fpsTask.getAvrfps();
}
}
public float getAvrfps() {
synchronized (this) {
return avrfps;
}
}
Все вращается вокруг fpsTask-объекта. Он используется interfaceUpdate-thread (или рабочим потоком приложения) и другим потоком, в котором он инициализирован.
Результат:
1). fpsTask-объект инициализируется в одном потоке
2). fpsTask-object передает значения другому потоку.
Когда я делаю fpsTask из FPSCalculatorGhost final, он начинает работать.