설명된 시나리오에서 Java 애플리케이션은 OSXAdapter 라이브러리를 통합하여 파일을 처리한 후 성능 문제와 비정상적인 동작을 경험합니다 macOS에서 이벤트를 삭제합니다. 문제는 시간이 많이 걸리는 작업을 수행하는 동안 EDT(이벤트 디스패치 스레드)를 차단하는 데서 발생할 수 있습니다.
이 문제를 해결하려면 EDT에서 모델을 업데이트하는 동안 별도의 스레드에서 이러한 작업을 수행하도록 애플리케이션을 수정해야 합니다. . SwingWorker는 process() 메서드를 사용하여 이에 적합한 메커니즘을 제공합니다. 또는 제공된 코드에 예시된 대로 호출Later()를 사용할 수 있습니다.
잘못된 접근 방식:
권장 접근 방식:
public class Controller extends SwingWorker{ public Controller() { execute(); // Starts the SwingWorker thread } @Override // Perform the time-consuming tasks (i.e., adding rows to the table) in a background thread. protected Void doInBackground() { // .... return null; } @Override // Update the GUI on the EDT after the background task is complete. protected void done() { // .... } }
위 내용은 파일 삭제에 OSXAdapter를 사용한 후 Java 앱이 지연되거나 충돌하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!