首頁 > Java > java教程 > 如何有效率地管理多個SwingWorker並更新標籤?

如何有效率地管理多個SwingWorker並更新標籤?

Susan Sarandon
發布: 2024-12-11 16:14:11
原創
284 人瀏覽過

How to Manage Multiple SwingWorkers and Update Labels Efficiently?

等待多個SwingWorker

這個問題問的是如何創建多個SwingWorker,每個SwingWorker 負責更新一個標籤,並在所有工作人員都已完成。

一種解決方案是使用 CountDownLatch,它允許一個執行緒在恢復執行之前等待指定數量的其他執行緒完成其任務。在提供的程式碼中,每個工作執行緒在完成時呼叫latch.countDown(),而Supervisor工作執行緒在latch.await()上阻塞,直到所有任務完成。然後,主管更新標籤或完全刪除它們(儘管後一種選擇通常沒有吸引力)。

這是示範此方法的增強程式碼範例:

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();
登入後複製

以上是如何有效率地管理多個SwingWorker並更新標籤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板