메인 스레드에서 데이터베이스 요청과 같은 과도한 작업을 실행하면 GUI가 정지될 수 있습니다. 멀티스레딩을 사용하면 이러한 작업을 비동기적으로 수행할 수 있습니다. Thread 및 Runnable 클래스와 함께 JavaFX에서 이를 사용하는 방법을 살펴보겠습니다.
코드에서courseCodeLbl UI를 업데이트하려고 할 때 IllegalStateException이 발생합니다. Thread를 사용하여 생성된 백그라운드 스레드의 요소입니다. 이는 주요 JavaFX 규칙을 위반합니다. 장면 그래프의 노드 수정은 JavaFX 애플리케이션 스레드에서 이루어져야 합니다.
1. Thread 및 Runnable 클래스 사용:
Runnable 인터페이스를 구현하여 별도의 스레드에서 작업을 실행할 수 있습니다. Runnable 객체의 run 메소드에는 실행될 코드가 포함되어 있습니다.
Thread t = new Thread(new Runnable() { @Override public void run() { // Perform database request here } });
2. run에서 다양한 메소드 호출:
클래스의 인스턴스를 생성하고 해당 메소드를 호출하여 run 메소드에서 다양한 메소드를 호출할 수 있습니다.
MyClass myClass = new MyClass(); Thread t = new Thread(new Runnable() { @Override public void run() { myClass.method1(); myClass.method2(); } });
JavaFX는 UI 애플리케이션 작업을 위해 특별히 설계된 멀티스레딩용 javafx.concurrent API를 제공합니다. 제공되는 내용:
- 작업 클래스:
결과를 반환하거나 예외를 발생시킬 수 있는 일회용 백그라운드 작업을 나타냅니다.
- 콜백:
FX 애플리케이션에서 핸들러를 자동으로 호출하는 setOnSucceeded 및 setOnFailed와 같은 편리한 메소드 Thread.
JavaFX 동시성 API 사용:
Task<Course> task = new Task<>() { @Override public Course call() { return myDAO.getCourseByCode(courseId); } }; task.setOnSucceeded(e -> { Course course = task.getValue(); courseCodeLbl.setText(course.getName()); }); exec.execute(task);
스레딩을 활용하면 데이터베이스 요청을 비동기식으로 수행하여 JavaFX UI의 응답성을 유지할 수 있습니다. 예외를 방지하고 원활한 작동을 보장하려면 JavaFX 규칙을 준수해야 합니다.
위 내용은 Java 멀티스레딩은 어떻게 데이터베이스 요청 성능을 향상시키고 JavaFX 애플리케이션의 UI 정지를 방지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!