Memahami Perbezaan antara Thread.start() dan Runnable.run()
Dalam Java concurrency, Runnable ialah antara muka yang mentakrifkan kaedah tunggal, run(), yang mengandungi kod yang harus dilaksanakan serentak dalam benang berasingan. Kelas Thread merangkumi butiran penciptaan dan pengurusan thread.
Senario 1: Pelaksanaan Terus Runnable
Dalam contoh pertama:
R1 r1 = new R1(); R2 r2 = new R2(); r1.run(); r2.run();
Kami mencipta contoh R1 dan R2 dan terus memanggil kaedah run() mereka. Ini melaksanakan kod dalam utas semasa tanpa membuat utas baharu. Dalam erti kata lain, kedua-dua R1 dan R2 dijalankan secara berurutan dalam urutan utama.
Senario 2: Pelaksanaan Berasaskan Benang bagi Runnable
Dalam contoh kedua:
R1 r1 = new R1(); R2 r2 = new R2(); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); t1.start(); t2.start();
Kami sekali lagi mencipta contoh R1 dan R2, tetapi kali ini kami menyerahkannya kepada pembina Benang, mencipta dua objek benang yang berasingan. Apabila kita memanggil t1.start() dan t2.start(), dua utas baharu dihasilkan, masing-masing melaksanakan kaedah run() R1 dan R2 masing-masing.
Perbezaan Utama
Perbezaan penting antara kedua-dua contoh berkisar pada penciptaan benang. Dalam senario pertama, tiada utas baharu dibuat, dan R1 dan R2 hanya dijalankan dalam utas utama sedia ada. Dalam senario kedua, dua utas berasingan dicipta, membenarkan pelaksanaan serentak R1 dan R2.
Ringkasnya, Runnable.run() mentakrifkan kod untuk dilaksanakan serentak, manakala Thread.start() memulakan a benang baharu untuk menjalankan kod itu. Pilihan pendekatan bergantung pada sama ada anda mahu melaksanakan kod dalam utas baharu atau utas utama.
Atas ialah kandungan terperinci Apakah Perbezaan Antara `Thread.start()` dan `Runnable.run()` dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!