Perbedaan antara metode start dan run metode di utas
Di utas, jika metode start memanggil metode run secara bergantian, mengapa kita memilih untuk memanggil metode start? Atau apa perbedaan antara memanggil metode start dan metode run di utas Java? Dua pertanyaan ini adalah dua pertanyaan wawancara multi-threaded yang sangat populer di tingkat pemula. Ketika seorang programmer Java mulai mempelajari utas, mereka pertama -tama akan belajar untuk mewarisi kelas utas, membebani metode run atau mengimplementasikan antarmuka yang dapat dijalankan, mengimplementasikan metode run, dan kemudian panggil metode start dari instance utas. Tetapi setelah dia memiliki beberapa pengalaman, dia akan menemukan bahwa metode awal akan memanggil metode run secara internal dengan melihat dokumentasi API atau cara lain, tetapi banyak dari kita tahu bahwa ketika kita ditanya selama wawancara, kita akan menyadari pentingnya pertanyaan ini. Dalam tutorial Java ini, kami akan memahami perbedaan antara memanggil metode start dan metode run saat memulai utas di java
Posting ini adalah sebuah postscript untuk beberapa artikel kami yang diterbitkan di Java Multithreading, misalnya perbedaan antara runnable dan utas di Java dan cara memecahkan masalah konsumen produsen di Java menggunakan blockingqueue. Jika Anda belum membacanya, Anda mungkin menemukan mereka menarik dan bermanfaat.
Perbedaan antara mulai dan berjalan di utas java
Perbedaan utama antara metode Mulai dan Jalankan adalah bahwa ketika program memanggil metode start, utas baru akan dibuat, dan kode dalam metode run akan berjalan di utas baru. Namun, ketika Anda memanggil metode RUN secara langsung, program tidak akan membuat utas baru, dan kode di dalam metode RUN akan berjalan pada utas saat ini. Dalam kebanyakan kasus, memanggil metode RUN adalah bug atau kesalahan. Karena niat asli penelepon adalah untuk memanggil metode start untuk memulai utas baru, kesalahan ini dapat dideteksi oleh banyak alat cakupan kode statis, seperti fingbugs. Jika Anda ingin menjalankan tugas yang membutuhkan banyak waktu, yang terbaik adalah menggunakan metode start, jika tidak, utas utama Anda akan macet saat Anda memanggil metode jalankan. Perbedaan lain adalah bahwa begitu sebuah utas dimulai, Anda tidak dapat berulang kali memanggil metode awal dari objek utas. Memanggil metode start utas yang sudah dimulai akan melaporkan pengecualian IllegalStateException, tetapi Anda dapat berulang kali memanggil metode lari
Berikut ini adalah demo dari metode start dan metode jalankan
Tugas di utas adalah mencetak nama utas saat ini yang diteruskan dalam nilai string.
Di sini kita dapat dengan jelas melihat perbedaan antara keduanya
kelas publik difBewTeenStartandrun {public static void main (string args []) {System.out.println (thread.currentThread (). getName ()); // Membuat dua utas untuk Metode dan Jalankan Metode Panggilan utas startThread = utas baru (tugas baru ("start")); Utas runthread = utas baru (tugas baru ("run")); startThread.start (); // Metode Mulai Panggilan Thread - Akan mengeksekusi di // Thread baru runthread.run (); // Calling Run Metode Thread - Akan mengeksekusi di // utas saat ini}/ * * Implementasi Runnable Sederhana */ Private Static Class Task Implement Runnable {Private String Caller; tugas publik (string caller) {this.caller = caller; } @Override public void run () {System.out.println ("Caller:" + Caller + "dan kode pada utas ini dieksekusi oleh:" + thread.currentThread (). GetName ()); }}}Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!