Rumah >Java >javaTutorial >Bagaimana Mengurus Berbilang SwingWorkers dan Kemas Kini Label dengan Cekap?
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();
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!