두 SwingWorker 클래스 간에 데이터를 공유하는 방법
소개:
Java에서는 다음을 사용합니다. SwingWorker를 사용하면 메인 스레드를 차단하지 않고 백그라운드에서 장기 실행 작업을 실행할 수 있습니다. 때로는 여러 SwingWorker 클래스 간에 데이터를 공유해야 하는 경우가 있습니다. 이 문서에서는 이 요구 사항에 대한 솔루션을 제시합니다.
솔루션 개요:
이 솔루션은 Executor 프레임워크, 특히 Executors.newCachedThreadPool()을 활용하여 여러 SwingWorker 작업을 동시에 실행합니다. . 각 작업은 특정 작업을 담당하며 공유 변수 또는 메서드 호출을 통해 데이터 교환이 발생합니다.
구현 세부 정보:
1. 작업 실행:
2. 데이터 공유:
예제 코드:
// SwingWorker task that performs a long-running operation and shares data class MyTask extends SwingWorker<Void, Integer> { private SharedData sharedData; // Shared variable for data exchange @Override protected Void doInBackground() { // Perform the long-running operation // Update the sharedData variable return null; } @Override protected void done() { // Notify other tasks that the data is ready for consumption } } // Main class that creates and executes the tasks class Main { private Executor executor = Executors.newCachedThreadPool(); private SharedData sharedData = new SharedData(); // Create shared data instance public static void main(String[] args) { // Create and execute multiple MyTask instances executor.execute(new MyTask(sharedData)); executor.execute(new MyTask(sharedData)); // Other thread operations and UI updates can continue here } }
참고:
이 솔루션은 SwingWorker 작업 간의 데이터 교환이 동기화되고 스레드로부터 안전하도록 보장하여 원활한 통신을 촉진하고 데이터 손상을 방지합니다. Executor 프레임워크는 작업 실행을 효율적으로 관리하여 시스템 리소스를 최적으로 활용합니다.
위 내용은 두 SwingWorker 클래스 간에 데이터를 공유하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!