Thread.start() dan Runnable.run() dalam Multithreading
Apabila mendalami multithreading, kita sering menghadapi dua kaedah penting: Thread .start() dan Runnable.run(). Memahami perbezaan antara mereka adalah penting untuk pengurusan benang yang berkesan.
Runnable.run()
Kaedah run() ialah bahagian penting dalam melaksanakan antara muka Runnable. Ia mentakrifkan kod yang perlu dilaksanakan sebagai benang berasingan. Dengan memanggil run(), anda pada asasnya memulakan pelaksanaan kod yang dilaksanakan dalam urutan panggilan.
Thread.start()
Tidak seperti run(), memanggil Thread .start() tidak langsung melaksanakan kod benang yang berkaitan. Sebaliknya, ia melancarkan utas baharu dan mewakilkan pelaksanaan kaedah run() kepada utas baharu itu. Urutan baharu beroperasi secara bebas daripada urutan panggilan, mendayakan berbilang rangkaian sebenar.
Perbezaan Utama
Perbezaan asas terletak pada sama ada berbilang rangkaian dicipta. Memanggil run() hanya menjalankan kod dalam urutan semasa, manakala start() memulakan urutan baharu untuk melaksanakan kod.
Contoh
Pertimbangkan dua kelas Runnable, R1 dan R2:
class R1 implements Runnable { public void run() { ... } } class R2 implements Runnable { public void run() { ... } }
Kes 1: Menggunakan run()
R1 r1 = new R1(); R2 r2 = new R2(); r1.run(); r2.run();
Dalam senario ini, kedua-dua r1 dan r2 melaksanakan kaedah run() mereka secara berurutan dalam urutan yang sama. Tiada urutan tambahan dibuat.
Kes 2: Menggunakan start()
R1 r1 = new R1(); R2 r2 = new R2(); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); t1.start(); t2.start();
Apabila start() digunakan pada t1 dan t2, urutan baharu dicipta untuk jalankan kaedah run() r1 dan r2, masing-masing. Ini menghasilkan multithreading sebenar, dengan setiap thread dilaksanakan secara bebas.
Atas ialah kandungan terperinci Thread.start() vs. Runnable.run(): Apakah Perbezaan dalam Multithreading?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!