Multithreading di Java – Belajar dengan Contoh

Diterbitkan: 2022-06-23

Java adalah bahasa pemrograman yang mendukung program multithread. Program multithreaded mengakomodasi dua atau lebih bagian (utas) yang berjalan secara bersamaan, menangani tugas yang berbeda, memungkinkan penggunaan CPU yang optimal. Multi-threading adalah perpanjangan dari multi tasking. Multi tasking dapat didefinisikan sebagai fitur di mana beberapa proses berbagi sumber daya pemrosesan yang sama seperti unit pemrosesan pusat.

Multithreading mencabangkan konsep multi-tasking ke berbagai aplikasi di mana operasi yang ditentukan dapat dipecah menjadi utas individu yang lebih kecil.

Masing-masing utas ini berjalan secara bersamaan dan independen dengan jalur eksekusi yang berbeda sehingga pengecualian dalam satu utas tidak memengaruhi kinerja yang lain.

Pelajari Kursus Pengembangan Perangkat Lunak online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Daftar isi

Apa itu Multithreading di Jawa?

Multithreading di Java adalah tempat beberapa utas dieksekusi secara bersamaan untuk memaksimalkan waktu CPU.

Siklus Hidup sebuah Thread

Utas memiliki tahapan yang berbeda dalam siklus hidupnya. Mereka adalah sebagai berikut:

  • Baru: Utas memulai siklus hidupnya sebagai utas baru. Itu tetap dalam tahap baru lahir ini sampai sebuah program menjalankan utas.
  • Runnable: Thread yang lahir memasuki tahap runnable ketika sebuah program memulainya. Utas mulai menjalankan tugasnya di tahap ini.
  • Menunggu: Ini adalah tahap transisi di mana sebuah utas menunggu utas lain untuk menyelesaikan tugasnya. Sebuah utas di tahap menunggu beralih ke tahap yang dapat dijalankan setelah menerima sinyal dari utas lainnya.
  • Waktu tunggu: Ini adalah tahap yang dapat dimasuki oleh utas yang dapat dijalankan untuk interval waktu tertentu. Utas dalam tahap ini bergerak kembali ke tahap yang dapat dijalankan pada akhir interval waktu tertentu.
  • Mati: Ini adalah tahap terakhir dalam siklus hidup utas. Sebuah thread memasuki tahap ini setelah menyelesaikan tugasnya.

Manfaat Multithreading di Java

  • Karena utas di Java bersifat independen, multithreading Java tidak memblokir pengguna, dan mereka dapat melakukan banyak operasi secara bersamaan.
  • Karena multithreading di Java memungkinkan banyak operasi, ini menghemat waktu dan efisien.
  • Program dapat berjalan terus-menerus bahkan jika bagian dari itu dicegat.
  • Ini meningkatkan kinerja terhadap program paralel konvensional yang menggunakan banyak proses.
  • Pembuatan program efisien yang memanfaatkan waktu CPU secara maksimal.
  • Sangat meningkatkan waktu respons aplikasi kompleks.
  • Membutuhkan lebih sedikit sumber daya dibandingkan dengan program paralel tradisional.

Urutan Prioritas Thread

Sistem operasi menentukan jadwal eksekusi thread berdasarkan prioritas thread. Prioritas thread ditentukan berdasarkan nilai konstanta.

  • Konstanta 1 mendapat prioritas minimum ( MIN_PRIORITY)
  • Konstanta 5 mendapat prioritas normal ( NORM_PRIORITY)
  • Konstanta 10 mendapat prioritas maksimum (MAX_PRIORITY)

Kursus & Artikel Populer tentang Rekayasa Perangkat Lunak

Program Populer
Program PG Eksekutif dalam Pengembangan Perangkat Lunak - IIIT B Program Sertifikat Blockchain - PURDUE Program Sertifikat Keamanan Siber - PURDUE MSC dalam Ilmu Komputer - IIIT B
Artikel Populer Lainnya
Gaji Cloud Engineer di AS 2021-22 Gaji Arsitek Solusi AWS di AS Gaji Pengembang Backend di AS Gaji Pengembang Front End di AS
Gaji pengembang web di AS Pertanyaan Wawancara Scrum Master pada tahun 2022 Bagaimana Memulai Karir di Keamanan Cyber ​​pada tahun 2022? Pilihan Karir di AS untuk Mahasiswa Teknik

Bagaimana cara membuat utas di Jawa?

Utas dapat dibuat di Java dengan dua cara:

  1. Memperluas kelas utas
  2. Menerapkan antarmuka yang dapat dijalankan

Membuat Thread dengan Memperluas Kelas Thread

Beberapa metode kelas utas dan fungsinya diberikan di bawah ini.

  • getName() : Untuk mendapatkan nama thread
  • getPriority(): Untuk mendapatkan prioritas thread
  • is Alive(): untuk mengetahui apakah utas sedang berjalan
  • join(): menunggu penghentian thread
  • run() : Titik entri utas
  • sleep(): Untuk menangguhkan utas untuk jendela waktu tertentu.
  • start() : Untuk mengaktifkan utas melalui metode run()-nya.

Langkah 1 : Ganti metode run() yang diberikan di kelas utas. Ini bertindak sebagai titik masuk untuk utas, dan seluruh logika program harus terbungkus dalam 4this.

Sintaks metode run() adalah sebagai berikut:

menjalankan kekosongan publik ( )

Langkah 2: Inisiasi objek utas dengan metode start() yang sintaksnya adalah void start() .

Berikut adalah contoh program multithreading di Java:

Contoh 1:

class MultithreadingDemo memperluas Thread{

menjalankan kekosongan publik (){

System.out.println("Utas saya sedang berjalan.");

}

public static void main(String args[]){

MultithreadingDemo obj=baru MultithreadingDemo();

obj.mulai();

}

}

Output dari program di atas akan menjadi:

utas saya berjalan.

Contoh 2:

kelas Hitungan memperluas Thread

{

Menghitung()

{

super("utas saya diperpanjang");

System.out.println("utas saya telah dibuat" + ini);

Mulailah();

}

menjalankan kekosongan publik ()

{

mencoba

{

untuk (int i=0 ;i<10;i++)

{

System.out.println(“Mencetak hitungan ” + i);

Thread.sleep(1000);

}

}

tangkap(InterruptedException e)

{

System.out.println("utas saya terputus");

}

System.out.println(“Utas saya sudah selesai” );

}

}

Kelas MemperluasContoh

{

public static void main(String args[])

{

Hitung cnt = Hitungan baru();

mencoba

{

sementara(cnt.isAlive())

{

System.out.println("Utas utama akan hidup sampai utas anak hidup");

Thread.sleep(1500);

}

}

tangkap(InterruptedException e)

{

System.out.println("Utas utama terputus");

}

System.out.println(“Jalan utama thread dihentikan” );

}

}

Output dari program di atas adalah

utas saya dibuatThread[utas runnable saya,5,main]

Utas utama akan hidup sampai utas anak hidup

Mencetak hitungan 0

Mencetak hitungan 1

Utas utama akan hidup sampai utas anak hidup

Mencetak hitungan 2

Utas utama akan hidup sampai utas anak hidup

Mencetak hitungan 3

Mencetak hitungan 4

Utas utama akan hidup sampai utas anak hidup

Mencetak hitungan 5

Utas utama akan hidup sampai utas anak hidup

Mencetak hitungan 6

Mencetak hitungan 7

Utas utama akan hidup sampai utas anak hidup

Mencetak hitungan 8

Utas utama akan hidup sampai utas anak hidup

Mencetak hitungan 9

menjalankan utas saya dihentikan

Proses thread utama dihentikan

Membuat Thread dengan Menerapkan Antarmuka yang Dapat Dijalankan

Ada tiga langkah penting yang harus diikuti saat menggunakan metode ini.

Langkah 1 : Metode run() harus diimplementasikan oleh antarmuka yang dapat dijalankan. Metode run() ini bertindak sebagai titik masuk untuk utas dan harus berisi seluruh logika program.

Sintaks untuk metode run() adalah

menjalankan kekosongan publik ( )

Langkah 2: Objek utas harus diaktifkan menggunakan konstruktor yang diberikan di bawah ini.

Utas (ThreadObj yang dapat dijalankan, String threadName);

Di sini threadObj bertindak sebagai kelas yang mengimplementasikan antarmuka yang dapat dijalankan, dan nama utas adalah nama yang diberikan ke utas baru.

Langkah 3: Setelah membuat objek utas, itu dapat dimulai dengan metode start() yang mengeksekusi metode run().

Sintaks metode start() adalah sebagai berikut.

batal mulai();

Contoh membuat utas dengan mengimplementasikan antarmuka yang dapat dijalankan dapat ditemukan di sini .

Untuk mempelajari lebih lanjut tentang Java multithreading dan pengembangan perangkat lunak, kami sarankan untuk mendaftar di Program Pascasarjana Eksekutif dalam Pengembangan Perangkat Lunak yang ditawarkan oleh IIIT Bangalore bekerja sama dengan upGrad.

Program PG Eksekutif dalam Pengembangan Perangkat Lunak adalah program online 13 bulan yang dirancang untuk membantu para profesional yang bekerja mengambil lompatan besar dalam karir mereka melalui studi kasus dan proyek yang relevan dengan industri. Program ini juga mencakup lebih dari sepuluh sesi langsung dari pakar industri untuk membantu para kandidat belajar lebih baik.

Program ini mencakup proyek industri untuk membantu para kandidat memiliki pengalaman langsung dan paparan industri yang memadai untuk menjadikan pembelajaran mereka relevan dan praktis. Penyelesaian program akan memberi penghargaan kepada para kandidat dengan sertifikasi IIIT B dan status alumni yang didambakan.

Program ini hadir dengan dukungan penempatan 360 derajat dari upGrad yang telah memengaruhi lebih dari 40.000 pelajar berbayar dari seluruh penjuru dunia untuk membuat segalanya menjadi lebih baik. upGrad memiliki basis pelajar dari lebih 85 negara yang memberikan kesempatan tak ternilai untuk memiliki jaringan rekan global bagi para kandidat.

Apa perbedaan antara multitasking dan multithreading di Jawa?

Multitasking adalah proses di mana banyak tugas dapat dilakukan secara bersamaan, dan multithreading adalah proses mengeksekusi beberapa utas pada saat yang sama, dengan setiap utas melakukan tugas yang berbeda.

Apakah pewarisan berganda didukung oleh Java?

Bahasa pemrograman Java mendukung multiple inheritance, sebuah proses di mana sebuah kelas mengimplementasikan lebih dari satu antarmuka. Kelas dapat memiliki implementasi metode yang berbeda (default atau statis) di antarmuka. Warisan berganda di Java hanya dapat diimplementasikan dengan antarmuka dan bukan kelas, tidak seperti bahasa C++.

Bisakah multithreading meningkatkan kinerja Java?

Multithreading meningkatkan kinerja Java dengan mengaktifkan beberapa CPU untuk menangani masalah yang sama. Ini tidak hanya mempercepat proses tetapi juga membantu dalam pemecahan masalah yang efisien.