[DevTip] Jfree Chart Data Update Synchronization

응용 프로그램의 thread에서 차트 데이터를 업데이트하고,
UI thread에서 차트 업데이트 하는 것이 일반적.
이 때, 데이터 갱신과 차트 업데이트 thread에서 각각 동일한 데이터 배열에 접근하면서 Boundary 관련 Exception이 발생함
이는 Jfree 뿐 아니라 Swing 자체가 thread-free한 구조가 아니기 때문.
동일한 데이터에 대해 두 개 thread가 동시 접근하지 못하도록!

  1. Java의 synchronize 키워드를 사용 
    1. Method나 데이터 배열에 synchronize 키워드 적용 
    2. Jfree 응용에서는 효과 없음 
  2. SwingUtilities.invokeLater() 함수 사용 
    1. 응용 프로그램 thread에서 SwingUtilities.invokeLater() 함수를 통해 실제 작업을 UI thread가 실행될 때까지 대기시켜 동기화 
    2. 참고 링크: http://alvinalexander.com/java/java-swingutilities-invoke-later-example-edt
    3. 문제 해결!

댓글

이 블로그의 인기 게시물

환경개선부담금

[DevTip] Windows에서 tail 쓰기...