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

Run() vs. start() dalam Java Thread: Apakah Perbezaan dalam Gelagat Multithreading?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-21 18:36:12534semak imbas

Run() vs. start() in Java Threads: What's the Difference in Multithreading Behavior?

Run() vs. start() dalam Threading: Penjelasan Komprehensif

Dalam pengaturcaraan multithreaded, memahami dengan berkesan perbezaan antara Thread.run () dan Runnable.run() ialah penting.

Soalan:

Pertimbangkan coretan kod berikut:

public static void main() {
    R1 r1 = new R1();
    R2 r2 = new R2();

    r1.run();
    r2.run();
}
public static void main() {
    R1 r1 = new R1();
    R2 r2 = new R2();
    Thread t1 = new Thread(r1);
    Thread t2 = new Thread(r2);

    t1.start();
    t2.start();
}

Jawapan:

Contoh Pertama: Tidak Multithreading

Dalam coretan pertama, r1.run() dan r2.run() dilaksanakan secara langsung tanpa membuat thread baharu. Akibatnya, kedua-dua R1 dan R2 dilaksanakan secara berurutan dalam utas utama.

Contoh Kedua: Multithreading

Dalam coretan kedua, objek Thread (t1 dan t2) dicipta untuk merangkum kejadian R1 dan R2, masing-masing. Apabila t1.start() dan t2.start() dipanggil, utas baharu akan dimulakan, masing-masing melaksanakan kaedah run() bagi pelaksanaan Runnable yang sepadan secara serentak selari dengan utas utama.

Kekunci Perbezaan:

  • Benang Penciptaan: start() mencipta urutan baharu, manakala run() melaksanakan Runnable dalam urutan panggilan.
  • Konteks Pelaksanaan: start() melaksanakan Runnable dalam urutan yang baru dibuat , benang bebas, menyediakan pelaksanaan selari yang benar. run() melaksanakan Runnable dalam urutan pemanggilan, mengehadkan konkurensi.

Atas ialah kandungan terperinci Run() vs. start() dalam Java Thread: Apakah Perbezaan dalam Gelagat 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