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

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

Barbara Streisand
Lepaskan: 2024-12-21 22:55:31
asal
117 orang telah melayarinya

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

Runnable run() vs. Thread start()

Soalan:

Serentak Pengaturcaraan Java, antara muka Runnable mentakrifkan kaedah run() yang merupakan titik masuk untuk tugas. Begitu juga, kelas Thread mempunyai kaedah mula() yang memulakan urutan pelaksanaan baharu. Apakah perbezaan utama antara kedua-dua kaedah ini?

Jawapan:

Perbezaan asas terletak pada penciptaan dan pelaksanaan benang:

Larian boleh lari (): Tiada Penciptaan Benang

  • Panggilan Runnable.run() secara langsung tidak mencipta urutan baharu.
  • Sebaliknya, ia melaksanakan kaedah run() dalam urutan pelaksanaan semasa.
  • Pendekatan ini sesuai apabila tugas itu ringan dan tidak memerlukan utas khususnya sendiri.

Permulaan utas(): Thread Penciptaan

  • Memanggil Thread.start() memulakan urutan pelaksanaan baharu.
  • Dalam urutan baharu, kaedah run() bagi objek Runnable yang berkaitan dilaksanakan.
  • Menggunakan Thread.start() membenarkan keselarian dengan membahagikan tugas kepada urutan berasingan yang dijalankan serentak.

Contoh:

Pertimbangkan dua kelas, R1 dan R2, melaksanakan antara muka Runnable:

class R1 implements Runnable {
    public void run() { ... }
}

class R2 implements Runnable {
    public void run() { ... }
}
Salin selepas log masuk

Dalam perkara berikut coretan kod, r1.run() dan r2.run() digunakan secara langsung, yang bermaksud tiada yang baharu benang dicipta:

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

    r1.run();
    r2.run();
}
Salin selepas log masuk

Sebaliknya, kod berikut mencipta dua utas baharu, t1 dan t2, dan memulakannya:

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

Dalam kod ini, tugasan yang dikaitkan dengan r1 dan r2 akan dilaksanakan serentak dalam urutan yang baru dibuat.

Atas ialah kandungan terperinci Runnable run() vs. Thread start(): Apakah Perbezaan Utama?. 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