Rumah >Java >javaTutorial >Thread.start() vs. Runnable.run(): Apakah Perbezaan dalam Multithreading?

Thread.start() vs. Runnable.run(): Apakah Perbezaan dalam Multithreading?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-03 16:53:39299semak imbas

Thread.start() vs. Runnable.run(): What's the Difference in Multithreading?

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!

Kenyataan:
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