Memahami Perbezaan Antara Thread.start() dan Thread.run()
Apabila bekerja dengan thread dalam Java, adalah penting untuk memahami peranan kaedah mula() dan jalankan(). Mereka memainkan fungsi yang berbeza dalam menguruskan kitaran hayat benang.
Thread.start() vs. Thread.run()
Kaedah Thread.start() dimulakan benang baharu dengan kod yang ditakrifkan dalam kaedah run(). Apabila diseru, ia mencipta urutan pelaksanaan yang berasingan dan melaksanakan kaedah run() serentak dengan utas yang dipanggil start().
Sebaliknya, Thread.run() melaksanakan secara langsung kod dalam run() kaedah dalam utas semasa. Ia tidak mencipta urutan baharu, yang bermaksud kod akan dijalankan secara berurutan dengan urutan panggilan.
Contoh Menunjukkan Perbezaan
Untuk menggambarkan perbezaan antara kedua-dua kaedah , pertimbangkan perkara berikut contoh:
class MyThread extends Thread { @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println("Thread " + this.getName() + ": " + i); } } } public class Main { public static void main(String[] args) { MyThread thread1 = new MyThread(); // Calling Thread.start() thread1.start(); // Calling Thread.run() directly thread1.run(); } }
Output:
Thread Thread-0: 0 Thread Thread-0: 1 Thread Thread-1: 0 Thread Thread-1: 1 Thread Thread-1: 2 Thread Thread-1: 3 Thread Thread-1: 4 Thread Thread-1: 5 Thread Thread-1: 6 Thread Thread-1: 7 Thread Thread-1: 8 Thread Thread-1: 9
Dalam contoh ini, memanggil start() mencipta utas baharu (Thread-0) yang melaksanakan run( ) kaedah serentak dengan utas utama. Akibatnya, output menyelangi mesej daripada kedua-dua utas.
Walau bagaimanapun, memanggil run() secara langsung tidak mencipta urutan baharu. Sebaliknya, ia melaksanakan kaedah run() dalam utas utama (Thread-1). Akibatnya, mesej daripada kaedah run() dicetak secara berurutan selepas panggilan mula().
Atas ialah kandungan terperinci Apakah perbezaan antara Thread.start() dan Thread.run() dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!