40 Pertanyaan dan Jawaban Wawancara Multithreading Teratas (2025)
Pertanyaan Wawancara Multithreading Java Teratas
Berikut adalah Pertanyaan Wawancara Multithreading, pertanyaan wawancara dan jawaban untuk kandidat baru dan berpengalaman untuk mendapatkan pekerjaan impian mereka.
1) Apa itu Benang?
Thread adalah unit eksekusi secara bersamaan. Kita dapat mengatakan bahwa ini adalah bagian dari proses yang dapat dengan mudah dijalankan secara bersamaan dengan bagian proses lainnya.
Unduh PDF Gratis: Pertanyaan dan Jawaban Wawancara Multithreading
2) Apa itu multithread?
multithreading di Java adalah proses mengeksekusi dua atau lebih thread secara bersamaan untuk pemanfaatan CPU secara maksimal.
Keuntungan utamanya adalah:
- Thread berbagi ruang alamat yang sama
- Benang tetap ringan
- Biaya komunikasi antar thread rendah.
3) Apa sajakah keadaan yang terkait dengan thread?
- Siap
- Running
- Menunggu
- Keadaan mati
4) Diskusikan Siklus Hidup Thread?
Siklus hidup suatu thread mirip dengan siklus hidup proses yang berjalan di suatu sistem operasi. Selama siklus hidupnya, thread dapat berpindah dari satu keadaan ke keadaan lainnya. Namun, hal ini bergantung pada operasi yang dilakukan.
5) Apa status threadnya?
Berikut adalah status thread yang berbeda:
Baru: Sebuah thread yang baru saja dibuat instance-nya berada dalam status baru. Ketika metode start() dipanggil, thread menjadi status siap. Kemudian dipindahkan ke status runnable oleh penjadwal thread.
- Dapat dijalankan: Sebuah thread yang siap dijalankan
- Berlari: Thread yang sedang dieksekusi berada dalam status berjalan.
- Diblokir: Thread yang diblokir sedang menunggu kunci monitor berada dalam kondisi ini. Hal ini juga dapat terjadi ketika thread melakukan operasi I/O dan berpindah ke status berikutnya.
- Menunggu: Ini adalah thread yang menunggu thread lain untuk melakukan tindakan tertentu.
- Jangka waktu_menunggu: Ini adalah thread yang menunggu thread lain untuk tampil.
- Dihentikan: Thread yang telah keluar berada dalam kondisi ini.

6) Apa perbedaan utama antara Thread dan Proses?
Thread adalah bagian dari proses. Prosesnya dapat berisi banyak thread. Prosesnya dapat berjalan pada ruang memori yang berbeda, namun semua thread berbagi ruang memori yang sama.
7) Apa itu kebuntuan?
Deadlock adalah situasi ketika sebuah thread menunggu kunci objek yang diakuisisi oleh thread lain dan thread kedua juga menunggu kunci objek yang diakuisisi oleh thread pertama. Karena kedua thread saling menunggu untuk melepaskan kondisi ini disebut deadlock.
8) Apa itu LiveLock?
Livelock terjadi ketika semua thread diblokir dan tidak dapat dijalankan karena tidak tersedianya sumber daya yang diperlukan, dan tidak adanya thread yang tidak diblokir.
Livelock dapat terjadi pada kondisi-kondisi berikut ini:
- Ketika semua thread dalam suatu program dieksekusi pada objek dengan parameter nol. Program ini dikunci secara langsung dan tidak pernah diproses hingga satu atau lebih thread memanggil Object.notify() atau Object.notifyAll() pada objek yang relevan.
- Livelock juga terjadi ketika semua thread dalam suatu program terjebak dalam loop tak terbatas.

9) Apa itu monitor?
- Monitor adalah kumpulan kode yang hanya dapat dieksekusi oleh satu thread dalam satu waktu.
- Jika ada thread lain yang mencoba mendapatkan akses pada saat yang sama, thread tersebut akan ditangguhkan hingga thread saat ini melepaskan Monitor.
10) Apa yang dimaksud dengan kelaparan benang?
Dalam situasi ketika sebuah thread tidak memiliki CPU yang cukup untuk eksekusinya, terjadi kelaparan thread.
Namun, hal ini mungkin terjadi dalam skenario berikut
- Thread dengan prioritas rendah akan mendapatkan lebih sedikit CPU dibandingkan dengan thread dengan prioritas tinggi. Thread dengan prioritas lebih rendah dapat membuat Anda kehabisan waktu menunggu untuk mendapatkan lebih banyak ruang CPU untuk melakukan penghitungan.
- Thread mungkin menunggu tanpa batas waktu untuk mengunci monitor objek tetapi notify() mungkin berulang kali membangunkan beberapa thread lainnya. Dalam hal ini, thread juga akan kelaparan.
11) Apa arti putaran sibuk di multi-threading?
Busy spin adalah teknik yang digunakan oleh pemrogram secara bersamaan untuk membuat thread menunggu pada kondisi tertentu. Ini sangat berbeda dari metode tradisional seperti wait() dan sleep() yang semuanya melibatkan pelepasan kendali CPU. Metode ini tidak mengharuskan CPU ditinggalkan, melainkan hanya menjalankan loop kosong.
12) Apa yang dimaksud dengan peralihan konteks dalam multi-threading?
Ini adalah proses menyimpan dan memulihkan keadaan CPU. Ini membantu untuk lanjut eksekusi thread dari titik yang sama di lain waktu. Ini adalah salah satu fitur penting untuk sistem operasi multitasking dan dukungan untuk lingkungan multi-thread.
13) Mengapa perilaku Thread tidak dapat diprediksi?
Kita dapat mengatakan bahwa perilaku thread tidak dapat diprediksi karena eksekusi Threads bergantung pada penjadwal Thread. Perlu diingat bahwa setiap penjadwal thread memiliki implementasi berbeda pada platform berbeda seperti Windows, Unix, dll.
14) Bagaimana cara menghentikan sementara eksekusi Thread selama jangka waktu tertentu?
Metode sleep () digunakan untuk menghentikan sementara eksekusi thread selama jangka waktu tertentu. Namun, hal ini tidak akan menghentikan pemrosesan thread untuk waktu tertentu. Namun, ketika thread bangun dari tidur, statusnya berubah menjadi runnable dan berdasarkan penjadwalan thread, maka thread tersebut akan dieksekusi.
15) Apa sajakah cara agar thread dapat memasuki status menunggu?
Sebuah thread dapat memasuki status menunggu dengan cara berikut
- Menggunakan metode tidur()
- Memblokir pada I/O
- Gagal mencoba mendapatkan kunci objek
- Dengan memanggil metode wait() suatu objek
16) Apa yang terjadi jika kita tidak mengganti metode yang dijalankan?
Di Java, ketika kita memanggil metode start() pada sebuah thread, metode tersebut secara internal memanggil metode run() dengan thread yang baru dibuat. Jadi, jika kita tidak mengganti metode run(), maka thread yang baru dibuat tidak akan dipanggil sehingga tidak terjadi apa-apa.
Contoh:
class MyThread extends Thread { //don't override run() method } public class DontOverrideRun { public static void main(String[] args) { System.out.println("main has started."); MyThread thread1=new MyThread(); thread1.start(); System.out.println("main has ended."); } }
17) Apa perbedaan utama antara metode Thread.start() & Thread?run()?
Metode Thread.start() (metode asli) dari kelas Thread melakukan tugas menjalankan metode Thread.A run() dalam sebuah thread. Jadi, jika kita langsung memanggil Thread. Metode run() juga dijalankan di thread yang sama. Jadi itu tidak akan pernah menyelesaikan tujuan pembuatan thread baru.
18) Bagaimana cara membuat utas di java?
Ada dua metode untuk membuat thread di java.
- Pertama dengan mengimplementasikan antarmuka Runnable dan kemudian membuat objek thread darinya.
- Metode kedua adalah memperluas kelas thread.
19) Apa yang dimaksud dengan Prioritas Thread?
Setiap thread mempunyai prioritas. Namun, prioritas yang lebih tinggi juga mendapat prioritas dalam pelaksanaannya. Namun, ini juga tergantung pada implementasi Thread Scheduler yang bergantung pada OS. Dimungkinkan untuk mengubah prioritas thread, tetapi hal ini tidak memberikan jaminan bahwa thread dengan prioritas lebih tinggi akan dieksekusi terlebih dahulu.
20) Apa yang dilakukan metode join()?
Metode join() menunggu thread mati. Ini memaksa semua thread yang sedang berjalan untuk berhenti mengeksekusi sampai thread tersebut bergabung untuk menyelesaikan tugasnya.
21) Apa itu Java Shutdown Hook?
Kait pematian Java digunakan untuk membersihkan sumber daya saat JVM dimatikan. Sumber daya yang bersih berarti menutup file log, mengirimkan beberapa peringatan, atau yang lainnya. Kait pematian perlu digunakan untuk mengeksekusi kode sebelum JVM dimatikan.
22) Apa dua kegunaan utama volatil di Jawa?
Thread diperbolehkan menyimpan nilai variabel di memori lokal. Jika suatu variabel ditandai sebagai volatil, maka setiap kali variabel yang sama digunakan, variabel tersebut harus dibaca dari memori utama.
Dengan cara yang sama, setiap kali variabel ditulis, nilainya harus disimpan di memori utama.
23) Bagaimana Anda bisa berbagi data antara dua thread di Java?
Kita bisa mendapatkan data antar thread dengan menggunakan objek bersama, atau secara bersamaan struktur data seperti BlockingQueue. Ini mengimplementasikan pola produsen-konsumen menggunakan metode tunggu dan pemberitahuan. Ini juga melibatkan berbagi objek antara dua thread.
24) Bagaimana beberapa thread dapat dikontrol secara bersamaan?
Beberapa thread dapat dikontrol secara bersamaan jika dibuat dalam objek ThreadGroup.
25) Apa yang dimaksud dengan metode pemblokiran di Java?
Dalam Java, metode pemblokiran adalah metode yang memblokir hingga tugas selesai. Misalnya, menerima () metode blok ServerSocket sampai saat klien terhubung. Di sini, pemblokiran mengacu pada segala sesuatu yang kontrolnya tidak akan kembali ke pemanggil sampai tugas selesai.
26) Apa perbedaan utama antara metode wait() dan sleep()?
Tunggu() | Tidur() |
Metode ini didefinisikan di kelas Object | Metode ini didefinisikan di kelas Thread |
Metode Wait() melepaskan kunci | Metode ini tidak pernah melepaskan kuncinya. |
27) Apa yang dimaksud dengan objek yang tidak dapat diubah? Bagaimana hal ini dapat membantu dalam menulis aplikasi secara bersamaan?
Objek apa pun dapat dianggap tidak dapat ditantang jika kondisinya tidak berubah setelah dibangun. Objek Abadi digunakan dalam membuat aplikasi yang sederhana, andal, dan bersamaan.
Untuk membuat objek tidak dapat diubah, penting untuk menjadikan kelas dan anggotanya final sehingga setelah objek dibuat, statusnya tidak berubah.
28) Katakan padaku perbedaan antara mengalah dan tidur?
Saat tugas memanggil metode hasil(), tugas akan kembali ke status siap.
Saat tugas memanggil metode sleep(), tugas akan kembali ke status menunggu.
29) Apa itu ThreadPool?
ThreadPool adalah kumpulan thread yang menggunakan kembali sejumlah thread untuk menjalankan tugas tertentu.
30) Apa gunanya kata kunci Tersinkronisasi?
Kata kunci yang disinkronkan dapat diterapkan pada metode statis atau non-statis. Menggunakan Tersinkronisasi, hanya satu thread yang dapat mengakses metode tersinkronisasi. Namun, dalam situasi di mana ada beberapa thread yang mencoba mengakses metode yang sama. Pada saat itu, thread lain harus menunggu thread eksekusi. Ini juga menyediakan kunci pada objek untuk mencegah kondisi balapan.
public void synchronized method1(){} public void synchronized staticmethod1(){} public void myMethod(){ synchronized (this){ //synchronized keyword on block of code } }
31) Apa yang dimaksud dengan kata kunci yang mudah berubah?
Kata kunci volatil adalah kualifikasi yang diterapkan pada variabel ketika dideklarasikan. Ini memberi tahu kompiler bahwa nilai variabel dapat berubah kapan saja – tanpa tindakan apa pun yang diambil oleh kode.
32) Apa perbedaan utama antara notify dan notifyAll di Java?
Metode Notify() tidak menyediakan cara apa pun untuk memilih thread tertentu, oleh karena itu metode ini hanya berguna ketika satu While notifyAll() mengirimkan notifikasi ke semua thread. Hal ini juga memungkinkan mereka bersaing untuk mendapatkan kunci. Ini juga memastikan bahwa setidaknya satu thread akan melanjutkan lebih jauh.
33) Parameter JVM manakah yang digunakan untuk mengontrol ukuran tumpukan thread?
Untuk mengontrol ukuran tumpukan Thread di Java, parameter Xss digunakan.
34) Bisakah Anda memulai thread dua kali di Java?
Tidak, setelah thread dimulai, thread tidak dapat dimulai untuk kedua kalinya.
35) Apa tujuan menggunakan metode hasil kelas thread?
Metode hasil adalah cara paling sederhana untuk meminta thread saat ini untuk melepaskan CPU sehingga thread lainnya. Ini adalah metode statis dan hanya menjamin bahwa thread saat ini akan melepaskan CPU tetapi tidak memberi tahu apa pun tentang thread lain mana yang juga berdampak pada CPU.
36) Kapan kita dapat mengatakan bahwa thread bukanlah proses yang ringan di java?
Thread bukanlah proses yang ringan ketika thread dari proses yang sama dijalankan secara bersamaan. Meskipun demikian, jika thread dari proses yang berbeda dijalankan secara bersamaan maka thread tersebut akan menjadi proses kelas berat.
37) Bisakah konstruktor Kelas Java disinkronkan?
Sebagai Standar Java, konstruktor tidak dapat disinkronkan karena thread lain tidak dapat melihat objek sebelum proses pembuatan thread menyelesaikannya. Konstruktor Objek Java tidak perlu disinkronkan karena akan mengunci objek yang sedang dibuat.
38) Apa yang dimaksud dengan variabel sementara?
Variabel sementara adalah variabel yang tidak dapat diserialkan selama serialisasi. Ini diinisialisasi ke nilai defaultnya selama serialisasi.
Pertanyaan wawancara ini juga akan membantu dalam viva Anda (lisan)
Hai Aku
itu sangat membantu saya. selama persiapan wawancara.
Sungguh terpuji untuk menulis artikel ini dan memberikan informasi ini.
Saya disarankan untuk
5) Apa status threadnya?
Runnable bukan status Berjalan. Ia siap untuk dijalankan
diperbarui! Terima kasih telah menunjukkan hal ini
1. Status yang dapat dijalankan dipandang sebagai lapisan ganda di tingkat OS
2.Hampir semua bahasa pemrograman melihat thread sebagai runnable atau TIDAK.
3. Thread yang dapat dijalankan dapat berada dalam status (siap atau berjalan).
4.Anda dapat memiliki dua thread dalam status yang dapat dijalankan, tetapi hanya satu thread yang akan ada dalam status "berjalan",
sedangkan thread kedua ada dalam keadaan “berjalan”.