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
Lepaskan: 2024-11-15 11:41:02
asal
1001 orang telah melayarinya

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

Output:

Running directly...
Salin selepas log masuk

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

Output:

Running in new thread...
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan