Rumah > Java > javaTutorial > Bagaimana untuk Berkongsi Data Antara Dua Kelas SwingWorker?

Bagaimana untuk Berkongsi Data Antara Dua Kelas SwingWorker?

Linda Hamilton
Lepaskan: 2024-11-16 01:05:02
asal
975 orang telah melayarinya

How to Share Data Between Two SwingWorker Classes?

Cara Berkongsi Data Antara Dua Kelas SwingWorker

Pengenalan:

Di Java, menggunakan SwingWorker membenarkan tugasan yang berjalan lama dilaksanakan di latar belakang tanpa menyekat utas utama. Kadangkala, ia menjadi perlu untuk berkongsi data antara berbilang kelas SwingWorker. Artikel ini membentangkan penyelesaian kepada keperluan ini.

Gambaran Keseluruhan Penyelesaian:

Penyelesaian menggunakan rangka kerja Pelaksana, khususnya Executors.newCachedThreadPool(), untuk melaksanakan berbilang tugas SwingWorker secara serentak . Setiap tugas bertanggungjawab untuk operasi tertentu, dan pertukaran data berlaku melalui pembolehubah kongsi atau penyebutan kaedah.

Butiran Pelaksanaan:

1. Pelaksanaan Tugasan:

  • Segera berbilang tugasan SwingWorker, setiap satu menjalankan operasi yang berbeza (cth., data pengkomputeran, memproses fail).
  • Laksanakan tugasan ini menggunakan Pelaksana, membolehkannya untuk berjalan serentak tanpa menyekat utas utama atau satu sama lain.

2. Perkongsian Data:

  • Buat pembolehubah kongsi untuk menyimpan data yang perlu ditukar antara tugas.
  • Gunakan blok disegerakkan untuk memastikan akses selamat benang kepada pembolehubah kongsi ini.
  • Sebagai alternatif, hantar data sebagai parameter kepada kaedah dalam tugasan yang berbeza, membolehkan komunikasi langsung.

Kod Contoh:

// 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
    }
}
Salin selepas log masuk

Nota:

Penyelesaian ini memastikan pertukaran data antara tugas SwingWorker disegerakkan dan selamat untuk benang, memudahkan komunikasi yang lancar dan mencegah rasuah data. Rangka kerja Pelaksana menguruskan pelaksanaan tugas dengan cekap, membolehkan penggunaan sumber sistem secara optimum.

Atas ialah kandungan terperinci Bagaimana untuk Berkongsi Data Antara Dua Kelas SwingWorker?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan