Rumah >Java >javaTutorial >Apakah Perbezaan Utama Antara `Thread.start()` dan `Thread.run()` dalam Java?

Apakah Perbezaan Utama Antara `Thread.start()` dan `Thread.run()` dalam Java?

DDD
DDDasal
2024-11-15 11:41:02997semak imbas

What's the Key Difference Between `Thread.start()` and `Thread.run()` in Java?

Memahami Nuansa Thread.start() dan Thread.run()

Perbezaan antara Thread.start() dan Thread. run() dalam Java memainkan peranan penting dalam multithreading. Walaupun kedua-dua kaedah melibatkan pelaksanaan kaedah run(), mereka melakukannya dengan cara yang berbeza secara asasnya.

Thread.run(): Direct Execution

Memanggil run() secara terus melaksanakan kaedah run() dalam utas semasa. Ini bermakna tiada utas berasingan yang dibuat untuk tugas itu. Sebaliknya, tugas itu dilaksanakan sebagai sebahagian daripada pelaksanaan urutan panggilan.

Contoh:

public class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("Running directly...");
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.run();
    }
}

Output:

Running directly...

Dalam ini contoh, memanggil run() terus mencetak "Running directly..." daripada thread utama, kerana tiada thread berasingan dibuat.

Thread.start(): Penciptaan Thread Baharu

Sebaliknya, memanggil start() mencipta utas baharu dan melaksanakan kaedah run() dalam utas baharu itu. Ini membolehkan berbilang tugasan dijalankan serentak.

Contoh:

public class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("Running in new thread...");
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start();
    }
}

Output:

Running in new thread...

Perhatikan bahawa panggilan mula() tidak segera laksanakan kaedah run(). Sebaliknya, urutan baharu dicipta dan Mesin Maya Java memutuskan masa untuk menjadualkan dan melaksanakannya.

Perbezaan Praktikal

Perbezaan antara Thread.start() dan Thread.run() menjadi jelas apabila mempertimbangkan tugasan yang mengambil masa yang lama untuk diselesaikan. Jika tugasan dilaksanakan secara langsung menggunakan run(), utas utama akan disekat sehingga tugasan selesai, menghalang tugasan lain daripada dilaksanakan dalam masa yang sama. Ini boleh membawa kepada prestasi dan tindak balas yang lemah.

Dengan menggunakan start(), tugasan dijalankan dalam urutan berasingan, membenarkan utas utama terus melaksanakan tugasan lain secara serentak. Ini meningkatkan prestasi keseluruhan dan mengekalkan tindak balas.

Atas ialah kandungan terperinci Apakah Perbezaan Utama 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