Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Multithreading Java Dijelaskan: Konsep, Siklus Hidup, dan Contoh Kode Praktis

Aplikasi Java seringkali perlu melakukan beberapa tugas secara bersamaan. Tutorial ini memandu Anda melalui eksekusi single-threaded versus multi-threaded, siklus hidup thread, teknik sinkronisasi, dan contoh kode praktis yang mengilustrasikan setiap konsep.

Apa Itu Single Thread?

Satu thread di Java adalah unit eksekusi terkecil. Runtime Java membuat user thread saat aplikasi dimulai, dan Anda dapat menambahkan thread user atau daemon threads tambahan sesuai kebutuhan. Daemon thread berjalan di latar belakang dan tidak mencegah JVM untuk keluar.

Contoh single thread:

package demotest; public class GuruThread { public static void main(String[] args) { System.out.println("Single Thread"); } }

Keuntungan eksekusi single-threaded:

Apa Itu Multithreading di Java?

Multithreading memungkinkan dua atau lebih thread untuk berjalan secara bersamaan, memaksimalkan penggunaan CPU. Thread berbagi ruang memori yang sama, jadi switch konteks cepat dan penggunaan memori tetap rendah.

Contoh pembuatan dua thread bersamaan:

package demotest; public class GuruThread1 implements Runnable { public static void main(String[] args) { Thread guruThread1 = new Thread("Guru1"); Thread guruThread2 = new Thread("Guru2"); guruThread1.start(); guruThread2.start(); System.out.println("Nama thread adalah berikut:"); System.out.println(guruThread1.getName()); System.out.println(guruThread2.getName()); } @Override public void run() { // logika thread di sini } }

Manfaat multithreading:

Siklus Hidup Thread di Java

Siklus hidup thread terdiri dari lima state yang berbeda:

  1. New – Thread diinstantiasi tetapi belum dimulai.
  2. Runnable – Thread telah dimulai dan siap untuk dieksekusi.
  3. Running – Thread sedang dieksekusi secara aktif.
  4. Waiting – Thread ditangguhkan sampai peristiwa tertentu terjadi.
  5. Dead – Thread telah menyelesaikan eksekusi.

Multithreading Java Dijelaskan: Konsep, Siklus Hidup, dan Contoh Kode Praktis
Siklus Hidup Thread di Java

Metode Thread Utama

MetodeDeskripsi
start()Memulai eksekusi thread; JVM memanggil run().
sleep(long milliseconds)Menunda thread saat ini untuk durasi yang ditentukan.
getName()Mengembalikan nama thread.
setPriority(int newPriority)Menyesuaikan prioritas thread (1–10).
yield()Menyarankan jadwal untuk menunda thread saat ini.

Contoh Thread Praktis

Berikut adalah contoh ringkas yang mendemonstrasikan pembuatan thread, penyesuaian prioritas, dan tidur.

package demotest; public class ThreadExample1 implements Runnable { @Override public void run() { // kerja thread di sini } public static void main(String[] args) { Thread guruThread1 = new Thread(); guruThread1.start(); try { Thread.sleep(1000); // jeda selama 1 detik } catch (InterruptedException e) { e.printStackTrace(); } guruThread1.setPriority(1); System.out.println(guruThread1.getPriority()); System.out.println("Thread Berjalan"); } }

Contoh keluaran:

Multithreading Java Dijelaskan: Konsep, Siklus Hidup, dan Contoh Kode Praktis

Sinkronisasi Thread

Ketika banyak thread mengakses sumber daya bersama, sinkronisasi memastikan konsistensi data. Di Java, Anda dapat membungkus bagian kritis dengan kata kunci synchronized, yang menjamin akses eksklusif.

synchronized(object) { // blok sinkronisasi }

Contoh Multithreading Lanjutan

Berikut adalah contoh yang lebih rumit yang membuat dua thread, masing-masing mencetak namanya dan counter dengan penundaan satu detik.

package demotest; public class GuruThread2 { public static void main(String[] args) { GuruThread3 threadGuru1 = new GuruThread3("guru1"); threadGuru1.start(); GuruThread3 threadGuru2 = new GuruThread3("guru2"); threadGuru2.start(); } } class GuruThread3 implements Runnable { private Thread guruthread; private String guruname; GuruThread3(String name) { this.guruname = name; } @Override public void run() { System.out.println("Thread berjalan " + guruname); for (int i = 0; i < 4; i++) { System.out.println(i); System.out.println(guruname); try { Thread.sleep(1000); } catch (InterruptedException e) { System.out.println("Thread telah diinterupsi"); } } } public void start() { System.out.println("Thread dimulai"); if (guruthread == null) { guruthread = new Thread(this, guruname); guruthread.start(); } } }

Keluaran biasa (diilustrasikan dalam gambar yang menyertai):

Multithreading Java Dijelaskan: Konsep, Siklus Hidup, dan Contoh Kode Praktis

Kesimpulan

java

  1. Java Hello World: Program Pertama Anda
  2. Fungsi C++ Dijelaskan dengan Contoh Kode Praktis
  3. Menguasai Koleksi C#: Tutorial Praktis dengan Contoh Dunia Nyata
  4. Menguasai Java String.indexOf(): Menemukan Substring & Contoh Praktis
  5. Memahami Java String.charAt(): Sintaks, Tipe Kembali, Pengecualian, dan Contoh Praktis
  6. Menguasai Metode Java String compareTo(): Sintaks, Kasus Penggunaan, dan Contoh Praktis
  7. Pengkonstruktor Overloading di Java – Dijelaskan dengan Contoh Kode Praktis
  8. Program Java untuk Menentukan Apakah Angka Prima
  9. Algoritma Insertion Sort di Java: Contoh Jelas & Panduan Langkah demi Langkah
  10. Selection Sort di Java: Contoh Langkah demi Langkah & Kode Lengkap