JAVA: Multithreading
Multithreading adalah fitur Java yang memungkinkan eksekusi bersamaan dari dua atau lebih bagian program untuk pemanfaatan CPU secara maksimal. Setiap bagian dari program tersebut disebut thread. Jadi, thread adalah proses ringan dalam suatu proses.
Thread dapat dibuat dengan menggunakan dua mekanisme:
- Memperluas Thread class
- Implementing Runnable Interface
Create Thread dengan cara meng-extend Thread class
Kita membuat Class yang memperluas Class java.lang.Thread. Class ini override method run() yang tersedia di Class Thread. Sebuah Thread memulai kehidupannya di dalam method run(). Kita membuat object Class baru dan memanggil metode start() untuk memulai eksekusi Thread. Start() memanggil metode run() pada object Thread.
// Java code for thread creation by extending // the Thread class class MultithreadingDemo extends Thread { public void run() { try { // Displaying the thread that is running System.out.println( "Thread " + Thread.currentThread().getId() + " is running"); } catch (Exception e) { // Throwing an exception System.out.println("Exception is caught"); } } } // Main Class public class Multithread { public static void main(String[] args) { int n = 8; // Number of threads for (int i = 0; i < n; i++) { MultithreadingDemo object = new MultithreadingDemo(); object.start(); } } }
Output
Thread 15 is running Thread 14 is running Thread 16 is running Thread 12 is running Thread 11 is running Thread 13 is running Thread 18 is running Thread 17 is running
Creat Thread dengan cara meng-implementasi Runnable Interface
Kita membuat Class baru yang mengimplementasikan java.lang.Runnable interface dan override method run(). Kemudian kita membuat instance objek Thread dan memanggil method start() pada object ini.
// Java code for thread creation by implementing // the Runnable Interface class MultithreadingDemo implements Runnable { public void run() { try { // Displaying the thread that is running System.out.println( "Thread " + Thread.currentThread().getId() + " is running"); } catch (Exception e) { // Throwing an exception System.out.println("Exception is caught"); } } } // Main Class class Multithread { public static void main(String[] args) { int n = 8; // Number of threads for (int i = 0; i < n; i++) { Thread object = new Thread(new MultithreadingDemo()); object.start(); } } }
Output
Thread 13 is running Thread 11 is running Thread 12 is running Thread 15 is running Thread 14 is running Thread 18 is running Thread 17 is running Thread 16 is running
Thread Class vs Runnable Interface
- Jika kita meng-extend class Thread, class kita tidak dapat meng-extend class lain karena Java tidak mendukung multiple inheritance. Namun, jika kita mengimplementasikan Runnable interface, Class kita masih dapat memperluas Class dasar lainnya.
- Kita dapat mencapai fungsionalitas dasar sebuah thread dengan memperluas Class Thread karena ia menyediakan beberapa inbuilt method seperti yield(), interupsi() dll. yang tidak tersedia di Runnable interface.
- Menggunakan runnable akan memberi object yang dapat dibagikan di antara banyak Thread.