Memanggil Thread.start() vs Thread.run() dalam Java
Pengenalan:
Dalam Java, multithreading menyediakan mekanisme untuk pelaksanaan tugas serentak. Salah satu komponen utama multithreading ialah kelas Thread. Untuk melaksanakan thread, seseorang boleh sama ada memanggil Thread.start() atau Thread.run(). Artikel ini bertujuan untuk menjelaskan perbezaan antara kedua-dua kaedah ini dan menunjukkan apabila ia membuat perbezaan.
Memahami Perbezaan:
Memanggil Thread.start() pada objek benang memulakan utas pelaksanaan baru. Ini mengarahkan penjadual urutan sistem pengendalian untuk mencipta urutan baharu dan menjadualkan pelaksanaannya. Sebaik sahaja dimulakan, utas menjadi bebas dan dilaksanakan serentak dengan utas utama.
Sebaliknya, memanggil Thread.run() pada objek thread hanya melaksanakan kaedah run() thread dalam thread semasa . Dalam kes ini, urutan tidak dijadualkan untuk dijalankan secara bebas dan kaedah run() dilaksanakan secara berurutan selepas kaedah run() digunakan.
Mengapa Memulakan Thread Daripada Memanggil Run?
Memulakan utas mempunyai beberapa faedah berbanding memanggil terus run():
Contoh Menunjukkan Perbezaan:
Untuk menggambarkan perbezaan, pertimbangkan contoh berikut:
public class ThreadExample extends Thread { @Override public void run() { System.out.println("Thread is running..."); } public static void main(String[] args) { ThreadExample thread = new ThreadExample(); // Call the run() method directly - executed in the main thread thread.run(); // Start the thread - runs concurrently with the main thread thread.start(); } }
Apabila kod ini dilaksanakan dengan panggilan kaedah run(), outputnya ialah:
Thread is running...
Dalam kes ini, kaedah run() dilaksanakan dalam utas utama, dan tiada konkurensi. Walau bagaimanapun, apabila kod dilaksanakan dengan panggilan kaedah mula(), output akan menjadi:
Thread is running...
... diikuti dengan output utas utama, menunjukkan bahawa utas berjalan serentak.
Atas ialah kandungan terperinci Apakah perbezaan antara memanggil Thread.start() dan Thread.run() dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!