Rumah >Java >javaTutorial >JavaFX `Platform.runLater` lwn. `Task`: Bilakah Saya Perlu Menggunakan Yang Mana?
Platform.runLater dan Task dalam JavaFX: Bila dan Cara Penggunaan
Dalam JavaFX, konsep Platform.runLater dan Task boleh mengelirukan untuk pemula. Mari kita jelaskan perbezaan mereka dan senario yang sesuai untuk penggunaannya.
Bila Menggunakan Tugasan:
Gunakan Tugasan untuk operasi yang rumit dan memakan masa yang perlu dilakukan dalam benang yang berasingan. Tugasan membenarkan penjejakan kemajuan, pelaksanaan tak segerak dan pengendalian acara semasa pelaksanaan tugasan.
Bila Menggunakan Platform.runLater:
Gunakan Platform.runLater untuk ringkas dan pantas operasi yang perlu dilaksanakan pada Benang Aplikasi JavaFX. Ini memastikan kemas kini GUI dilakukan dengan betul.
Peraturan Emas untuk Penggunaan:
Sebagai peraturan umum, gunakan Tugasan untuk operasi yang mengambil masa lebih daripada beberapa milisaat untuk diselesaikan , dan gunakan Platform.runLater untuk kemas kini GUI pantas.
Objek dan Threading:
Kedua-dua Task dan Platform.runLater beroperasi dengan membuat thread berasingan dalam thread utama. Walau bagaimanapun, mereka berbeza dalam cara mereka mengendalikan kemas kini GUI:
Contoh: Pengiraan Panjang dan Kemas Kini GUI
Pertimbangkan contoh berikut di mana kita perlu mengira dari 0 kepada 1 juta dan kemas kini bar kemajuan dalam GUI:
Menggunakan Platform.runLater:
final ProgressBar bar = new ProgressBar(); new Thread(new Runnable() { @Override public void run() { for (int i = 1; i <= 1000000; i++) { final int counter = i; Platform.runLater(new Runnable() { @Override public void run() { bar.setProgress(counter / 1000000.0); } }); } } }).start();
Kod ini akan menyebabkan banjir baris gilir acara yang berlebihan dan potensi masalah prestasi.
Menggunakan Tugas:
Task task = new Task<Void>() { @Override public Void call() { static final int max = 1000000; for (int i = 1; i <= max; i++) { updateProgress(i, max); } return null; } }; ProgressBar bar = new ProgressBar(); bar.progressProperty().bind(task.progressProperty()); new Thread(task).start();
Kod ini menggunakan Tugas untuk melakukan pengiraan dan mengemas kini GUI dengan cekap tanpa membanjiri baris gilir acara.
Atas ialah kandungan terperinci JavaFX `Platform.runLater` lwn. `Task`: Bilakah Saya Perlu Menggunakan Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!