저는 멀티 스레딩, Java 및 JavaFx에 익숙하지 않습니다. 라이브 데이터를 기반으로 그래프를 지속적으로 업데이트하는 JavaFX UI로 애플리케이션을 구축하고 있습니다. 여기에 현재 디자인 인 자바 FX 버튼을 누르면, JavaFx 자바 스레드의 알림을 기반으로 UI 업데이트
1.
, 나는 응답입니다startButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
stopButton.setDisable(false);
if(!startButton.isDisable()){
runSequence = new Thread(new Runnable(){
@Override
public void run() {
SynchThreads sharedObject = new SynchThreads();
new Bridge(sharedObject);
startSequence = new Sequence(sharedObject);
startSequence.performCalls();
}
});
runSequence.start();
}
startButton.setDisable(true);
}
});
2 runSequence 스레드를 요청을 보내고 얻을 수있는 프레임 워크를 설정하는 스레드를 호출 위와 같이 호출하면 끊임없이 데이터를 수신하는 다른 스레드 "callbackThread"가 호출됩니다. 수신이 데이터
BusinessLogic businessLogic = new BusinessLogic();
executor.submit(pduApiDllCallBackThread);//This collects the data in background
//Here we are back on runSequence thread that works on the collected data.
while(true){
response = sharedObject.take();
businessLogic.primeData(response);
}
3이 데이터에 대해 작업을 한 후 BusinessLogic 클래스 그래프에 도시한다 이벤트 ID 및 데이터를 사용자 인터페이스에 통지 추가 처리 runSequence 스레드에 전달된다. 사용자 인터페이스 매번에서
4.
UI.notifyListeners(0, graphCoords);//here event ID is 0 and graphCoords is a HashMap
은 내가 Platform.runLater를 사용하여 선 차트를 업데이트 알림을받을. 이 알림은 4 밀리 초마다 발생합니다. 그래서, Platform.runLater의 많은이이 작업을 수행 할 수 확인 경우
public void notifyListeners(int eventType, Map<Integer, Float> graphCoords) {
Platform.runLater(new Runnable(){
@Override
public void run() {
//Old series is cleared. Showing dummy data being updated
series.getData().clear();
series.getData().add(new XYChart.Data("1", Math.random()+1));
series.getData().add(new XYChart.Data("3", Math.random()+5));
series.getData().add(new XYChart.Data("4", Math.random()-25));
series.getData().add(new XYChart.Data("2", Math.random()-10));
series.getData().add(new XYChart.Data("-1", xxx));
}
});
}
이 전문가의 조언을 주시기 바랍니다 전화 또는 UI.I에서이 처리하는 더 나은 방법이 있는지하지 않는 일을 끝낼 UI 아래에있는 레이어를보다 잘 제어 할 수 있습니다. 알림이 4ms마다 발생하므로 더 나은 접근 방법이 있는지 알고 싶습니다.
도움을 주시면 감사하겠습니다. 도와주세요. 감사 !
감사합니다. 응답을 받고 응답을 처리하는 스레드간에 공유 객체가 있고 오라클 워드 프로세서에서 설명한대로 간단한 대기 알림 메커니즘을 사용합니다. 내 관심사는 최종 결과와 JavaFx 스레드가있는 시작 버튼에서 호출되는 스레드 간의 상호 작용에 관한 것입니다. 이것을 처리 할 대체 방법이 있습니까? 제발 제안 해주세요. – user1724114
나는 그 상호 작용에 대해 어떤 걱정도하지 않는다. – jewelsea
안녕하세요, Jewelsea, 자세한 답변을 주셔서 감사합니다. 고맙습니다. 즐거운 X-Mas와 새해 복 많이 받으세요. – user1724114