Rumah > Java > javaTutorial > Bagaimana Mengurus Berbilang SwingWorkers dan Kemas Kini Label dengan Cekap?

Bagaimana Mengurus Berbilang SwingWorkers dan Kemas Kini Label dengan Cekap?

Susan Sarandon
Lepaskan: 2024-12-11 16:14:11
asal
314 orang telah melayarinya

How to Manage Multiple SwingWorkers and Update Labels Efficiently?

Menunggu Berbilang SwingWorkers

Soalan ini menanyakan cara mencipta berbilang SwingWorkers, masing-masing bertanggungjawab mengemas kini label dan mengalih keluar semua label apabila semua pekerja telah selesai.

Satu penyelesaian ialah menggunakan CountDownLatch, yang membolehkan utas untuk menunggu bilangan utas lain yang ditentukan untuk menyelesaikan tugas mereka sebelum meneruskan pelaksanaan. Dalam kod yang disediakan, setiap pekerja memanggil latch.countDown() apabila selesai, manakala pekerja Penyelia menyekat pada latch.await() sehingga semua tugasan selesai. Penyelia kemudian mengemas kini label atau mengalih keluarnya sama sekali (walaupun pilihan terakhir biasanya tidak menarik).

Berikut ialah contoh kod dipertingkat yang menunjukkan pendekatan ini:

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.Random;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.swing.*;

/**
* @see https://stackoverflow.com/a/11372932/230513
* @see https://stackoverflow.com/a/3588523/230513
*/
public class WorkerLatchTest extends JApplet {

    private static final int N = 8;
    private static final Random rand = new Random();
    private Queue<JLabel> labels = new LinkedList<JLabel>();
    private JPanel panel = new JPanel(new GridLayout(0, 1));
    private JButton startButton = new JButton(new StartAction("Do work"));

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                JFrame frame = new JFrame();
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana Mengurus Berbilang SwingWorkers dan Kemas Kini Label dengan Cekap?. 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