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

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

Barbara Streisand
Barbara Streisandasal
2024-11-16 19:00:03484semak imbas

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

Memahami Perbezaan Antara Thread.start() dan Thread.run()

Apabila bekerja dengan thread dalam Java, adalah penting untuk memahami peranan kaedah mula() dan jalankan(). Mereka memainkan fungsi yang berbeza dalam menguruskan kitaran hayat benang.

Thread.start() vs. Thread.run()

Kaedah Thread.start() dimulakan benang baharu dengan kod yang ditakrifkan dalam kaedah run(). Apabila diseru, ia mencipta urutan pelaksanaan yang berasingan dan melaksanakan kaedah run() serentak dengan utas yang dipanggil start().

Sebaliknya, Thread.run() melaksanakan secara langsung kod dalam run() kaedah dalam utas semasa. Ia tidak mencipta urutan baharu, yang bermaksud kod akan dijalankan secara berurutan dengan urutan panggilan.

Contoh Menunjukkan Perbezaan

Untuk menggambarkan perbezaan antara kedua-dua kaedah , pertimbangkan perkara berikut contoh:

class MyThread extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println("Thread " + this.getName() + ": " + i);
        }
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread thread1 = new MyThread();
        
        // Calling Thread.start()
        thread1.start();
        
        // Calling Thread.run() directly
        thread1.run();
    }
}

Output:

Thread Thread-0: 0
Thread Thread-0: 1
Thread Thread-1: 0
Thread Thread-1: 1
Thread Thread-1: 2
Thread Thread-1: 3
Thread Thread-1: 4
Thread Thread-1: 5
Thread Thread-1: 6
Thread Thread-1: 7
Thread Thread-1: 8
Thread Thread-1: 9

Dalam contoh ini, memanggil start() mencipta utas baharu (Thread-0) yang melaksanakan run( ) kaedah serentak dengan utas utama. Akibatnya, output menyelangi mesej daripada kedua-dua utas.

Walau bagaimanapun, memanggil run() secara langsung tidak mencipta urutan baharu. Sebaliknya, ia melaksanakan kaedah run() dalam utas utama (Thread-1). Akibatnya, mesej daripada kaedah run() dicetak secara berurutan selepas panggilan mula().

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