Pelaksanaan Benang dalam Java: Membandingkan Thread.start() dan Thread.run()
Di Jawa, aspek asas konkurensi ialah penciptaan dan pelaksanaan benang. Memahami perbezaan antara Thread.start() dan Thread.run() adalah penting dalam konteks ini.
Thread.start() ialah kaedah yang bertanggungjawab untuk memulakan urutan pelaksanaan baharu. Apabila dipanggil, ia menyediakan tindanan benang, menetapkan keadaan awalnya kepada runnable dan menjadualkannya untuk dilaksanakan oleh Java Virtual Machine (JVM). Sebaliknya, Thread.run() melaksanakan secara langsung kod dalam kaedah run() pada urutan panggilan, tanpa membuat yang baharu.
Mengapa Menggunakan Thread.start()?
Menggunakan Thread.start() berbanding Thread.run() adalah penting kerana:
Seruan Terus Thread.run()
Walaupun nampaknya mudah untuk memanggil Thread.run(), pendekatan ini harus dielakkan untuk sebab-sebab berikut:
Contoh
Pertimbangkan kod berikut:
public class ThreadExample { public static void main(String[] args) { Runnable task = () -> System.out.println("This is a new thread!"); Thread thread = new Thread(task); // Direct invocation of run() - no multi-threading occurs. // thread.run(); // Correct multi-threading using start(). thread.start(); } }
Apabila mengulas seruan langsung Thread.run(), output akan menunjukkan bahawa thread baharu telah dibuat dan ausgeführt, manakala run() secara langsung akan melaksanakan kod dalam benang utama, menghasilkan output tanpa multi-threading.
Kesimpulan
Di Java, memanggil Thread.start() ialah pendekatan pilihan untuk mencipta dan melaksanakan thread. Thread.run(), sebaliknya, tidak boleh digunakan secara langsung kerana ia menghalang keupayaan pengurusan berbilang benang dan pengurusan.
Atas ialah kandungan terperinci Mengapakah Thread.start() diutamakan berbanding Thread.run() untuk pelaksanaan thread dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!