Rumah >Java >javaTutorial >Apakah Perbezaan Utama Antara `Thread.start()` dan `Thread.run()` dalam Java?
Memahami Nuansa Thread.start() dan Thread.run()
Perbezaan antara Thread.start() dan Thread. run() dalam Java memainkan peranan penting dalam multithreading. Walaupun kedua-dua kaedah melibatkan pelaksanaan kaedah run(), mereka melakukannya dengan cara yang berbeza secara asasnya.
Thread.run(): Direct Execution
Memanggil run() secara terus melaksanakan kaedah run() dalam utas semasa. Ini bermakna tiada utas berasingan yang dibuat untuk tugas itu. Sebaliknya, tugas itu dilaksanakan sebagai sebahagian daripada pelaksanaan urutan panggilan.
Contoh:
public class MyThread extends Thread { @Override public void run() { System.out.println("Running directly..."); } } public class Main { public static void main(String[] args) { MyThread thread = new MyThread(); thread.run(); } }
Output:
Running directly...
Dalam ini contoh, memanggil run() terus mencetak "Running directly..." daripada thread utama, kerana tiada thread berasingan dibuat.
Thread.start(): Penciptaan Thread Baharu
Sebaliknya, memanggil start() mencipta utas baharu dan melaksanakan kaedah run() dalam utas baharu itu. Ini membolehkan berbilang tugasan dijalankan serentak.
Contoh:
public class MyThread extends Thread { @Override public void run() { System.out.println("Running in new thread..."); } } public class Main { public static void main(String[] args) { MyThread thread = new MyThread(); thread.start(); } }
Output:
Running in new thread...
Perhatikan bahawa panggilan mula() tidak segera laksanakan kaedah run(). Sebaliknya, urutan baharu dicipta dan Mesin Maya Java memutuskan masa untuk menjadualkan dan melaksanakannya.
Perbezaan Praktikal
Perbezaan antara Thread.start() dan Thread.run() menjadi jelas apabila mempertimbangkan tugasan yang mengambil masa yang lama untuk diselesaikan. Jika tugasan dilaksanakan secara langsung menggunakan run(), utas utama akan disekat sehingga tugasan selesai, menghalang tugasan lain daripada dilaksanakan dalam masa yang sama. Ini boleh membawa kepada prestasi dan tindak balas yang lemah.
Dengan menggunakan start(), tugasan dijalankan dalam urutan berasingan, membenarkan utas utama terus melaksanakan tugasan lain secara serentak. Ini meningkatkan prestasi keseluruhan dan mengekalkan tindak balas.
Atas ialah kandungan terperinci Apakah Perbezaan Utama Antara `Thread.start()` dan `Thread.run()` dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!