Rumah > Java > javaTutorial > Apakah Perbezaan Antara `Thread.start()` dan `Runnable.run()` dalam Java?

Apakah Perbezaan Antara `Thread.start()` dan `Runnable.run()` dalam Java?

Mary-Kate Olsen
Lepaskan: 2025-01-01 11:17:11
asal
909 orang telah melayarinya

What's the Difference Between `Thread.start()` and `Runnable.run()` in Java?

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();
Salin selepas log masuk

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();
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan