Rumah > Java > javaTutorial > Apakah perbezaan antara memanggil Thread.start() dan Thread.run() dalam Java?

Apakah perbezaan antara memanggil Thread.start() dan Thread.run() dalam Java?

Mary-Kate Olsen
Lepaskan: 2024-11-13 11:17:02
asal
646 orang telah melayarinya

What is the difference between calling Thread.start() and Thread.run() in Java?

Memanggil Thread.start() vs Thread.run() dalam Java

Pengenalan:
Dalam Java, multithreading menyediakan mekanisme untuk pelaksanaan tugas serentak. Salah satu komponen utama multithreading ialah kelas Thread. Untuk melaksanakan thread, seseorang boleh sama ada memanggil Thread.start() atau Thread.run(). Artikel ini bertujuan untuk menjelaskan perbezaan antara kedua-dua kaedah ini dan menunjukkan apabila ia membuat perbezaan.

Memahami Perbezaan:
Memanggil Thread.start() pada objek benang memulakan utas pelaksanaan baru. Ini mengarahkan penjadual urutan sistem pengendalian untuk mencipta urutan baharu dan menjadualkan pelaksanaannya. Sebaik sahaja dimulakan, utas menjadi bebas dan dilaksanakan serentak dengan utas utama.

Sebaliknya, memanggil Thread.run() pada objek thread hanya melaksanakan kaedah run() thread dalam thread semasa . Dalam kes ini, urutan tidak dijadualkan untuk dijalankan secara bebas dan kaedah run() dilaksanakan secara berurutan selepas kaedah run() digunakan.

Mengapa Memulakan Thread Daripada Memanggil Run?
Memulakan utas mempunyai beberapa faedah berbanding memanggil terus run():

  • Concurrency: Dengan memulakan utas, berbilang utas boleh dilaksanakan serentak, menggunakan yang tersedia memproses sumber dan meningkatkan prestasi aplikasi.
  • Pengurusan Benang: Sistem pengendalian menguruskan urutan, termasuk penjadualan dan penukaran konteks, membebaskan aplikasi daripada tanggungjawab ini.
  • Kesederhanaan Kod: Memulakan utas ialah cara yang lebih ringkas dan mudah untuk mencapai konkurensi berbanding mengurus utas secara manual dengan memanggil terus run().

Contoh Menunjukkan Perbezaan:
Untuk menggambarkan perbezaan, pertimbangkan contoh berikut:

public class ThreadExample extends Thread {

    @Override
    public void run() {
        System.out.println("Thread is running...");
    }

    public static void main(String[] args) {
        ThreadExample thread = new ThreadExample();

        // Call the run() method directly - executed in the main thread
        thread.run();

        // Start the thread - runs concurrently with the main thread
        thread.start();
    }
}
Salin selepas log masuk

Apabila kod ini dilaksanakan dengan panggilan kaedah run(), outputnya ialah:

Thread is running...
Salin selepas log masuk
Salin selepas log masuk

Dalam kes ini, kaedah run() dilaksanakan dalam utas utama, dan tiada konkurensi. Walau bagaimanapun, apabila kod dilaksanakan dengan panggilan kaedah mula(), output akan menjadi:

Thread is running...
Salin selepas log masuk
Salin selepas log masuk

... diikuti dengan output utas utama, menunjukkan bahawa utas berjalan serentak.

Atas ialah kandungan terperinci Apakah perbezaan antara memanggil Thread.start() dan Thread.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