Difference between revisions of "JAVA: Multithreading"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
Line 5: | Line 5: | ||
* Extending the Thread class | * Extending the Thread class | ||
* Implementing the Runnable Interface | * Implementing the Runnable Interface | ||
+ | |||
+ | |||
+ | 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, utas adalah proses ringan dalam suatu proses. | ||
+ | |||
+ | Utas dapat dibuat dengan menggunakan dua mekanisme: | ||
+ | |||
+ | * Memperluas kelas Thread | ||
+ | * Menerapkan Antarmuka Runnable | ||
+ | |||
+ | |||
+ | |||
==Thread creation by extending the Thread class== | ==Thread creation by extending the Thread class== | ||
We create a class that extends the java.lang.Thread class. This class overrides the run() method available in the Thread class. A thread begins its life inside run() method. We create an object of our new class and call start() method to start the execution of a thread. Start() invokes the run() method on the Thread object. | We create a class that extends the java.lang.Thread class. This class overrides the run() method available in the Thread class. A thread begins its life inside run() method. We create an object of our new class and call start() method to start the execution of a thread. Start() invokes the run() method on the Thread object. | ||
+ | |||
+ | |||
+ | Kami membuat kelas yang memperluas kelas java.lang.Thread. Kelas ini menimpa metode run() yang tersedia di kelas Thread. Sebuah utas memulai kehidupannya di dalam metode run(). Kami membuat objek kelas baru kami dan memanggil metode start() untuk memulai eksekusi utas. Start() memanggil metode run() pada objek Thread. | ||
+ | |||
// Java code for thread creation by extending | // Java code for thread creation by extending | ||
Line 54: | Line 69: | ||
We create a new class which implements java.lang.Runnable interface and override run() method. Then we instantiate a Thread object and call start() method on this object. | We create a new class which implements java.lang.Runnable interface and override run() method. Then we instantiate a Thread object and call start() method on this object. | ||
+ | |||
+ | Kami membuat kelas baru yang mengimplementasikan antarmuka java.lang.Runnable dan menimpa metode run(). Kemudian kita membuat instance objek Thread dan memanggil metode start() pada objek ini. | ||
+ | |||
+ | |||
// Java code for thread creation by implementing | // Java code for thread creation by implementing | ||
Line 101: | Line 120: | ||
* We can achieve basic functionality of a thread by extending Thread class because it provides some inbuilt methods like yield(), interrupt() etc. that are not available in Runnable interface. | * We can achieve basic functionality of a thread by extending Thread class because it provides some inbuilt methods like yield(), interrupt() etc. that are not available in Runnable interface. | ||
* Using runnable will give you an object that can be shared amongst multiple threads. | * Using runnable will give you an object that can be shared amongst multiple threads. | ||
+ | |||
+ | |||
+ | * Jika kita meng-extend class Thread, class kita tidak dapat meng-extend class lain karena Java tidak mendukung multiple inheritance. Namun, jika kita mengimplementasikan antarmuka Runnable, kelas kita masih dapat memperluas kelas dasar lainnya. | ||
+ | * Kita dapat mencapai fungsionalitas dasar sebuah thread dengan memperluas kelas Thread karena ia menyediakan beberapa metode bawaan seperti hasil(), interupsi() dll. yang tidak tersedia di antarmuka Runnable. | ||
+ | * Menggunakan runnable akan memberi Anda objek yang dapat dibagikan di antara banyak utas. | ||
+ | |||
Revision as of 16:34, 11 May 2022
Multithreading is a Java feature that allows concurrent execution of two or more parts of a program for maximum utilization of CPU. Each part of such program is called a thread. So, threads are light-weight processes within a process.
Threads can be created by using two mechanisms :
- Extending the Thread class
- Implementing the Runnable Interface
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, utas adalah proses ringan dalam suatu proses.
Utas dapat dibuat dengan menggunakan dua mekanisme:
- Memperluas kelas Thread
- Menerapkan Antarmuka Runnable
Thread creation by extending the Thread class
We create a class that extends the java.lang.Thread class. This class overrides the run() method available in the Thread class. A thread begins its life inside run() method. We create an object of our new class and call start() method to start the execution of a thread. Start() invokes the run() method on the Thread object.
Kami membuat kelas yang memperluas kelas java.lang.Thread. Kelas ini menimpa metode run() yang tersedia di kelas Thread. Sebuah utas memulai kehidupannya di dalam metode run(). Kami membuat objek kelas baru kami dan memanggil metode start() untuk memulai eksekusi utas. Start() memanggil metode run() pada objek 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
Thread creation by implementing the Runnable Interface
We create a new class which implements java.lang.Runnable interface and override run() method. Then we instantiate a Thread object and call start() method on this object.
Kami membuat kelas baru yang mengimplementasikan antarmuka java.lang.Runnable dan menimpa metode run(). Kemudian kita membuat instance objek Thread dan memanggil metode start() pada objek 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
- If we extend the Thread class, our class cannot extend any other class because Java doesn’t support multiple inheritance. But, if we implement the Runnable interface, our class can still extend other base classes.
- We can achieve basic functionality of a thread by extending Thread class because it provides some inbuilt methods like yield(), interrupt() etc. that are not available in Runnable interface.
- Using runnable will give you an object that can be shared amongst multiple threads.
- Jika kita meng-extend class Thread, class kita tidak dapat meng-extend class lain karena Java tidak mendukung multiple inheritance. Namun, jika kita mengimplementasikan antarmuka Runnable, kelas kita masih dapat memperluas kelas dasar lainnya.
- Kita dapat mencapai fungsionalitas dasar sebuah thread dengan memperluas kelas Thread karena ia menyediakan beberapa metode bawaan seperti hasil(), interupsi() dll. yang tidak tersedia di antarmuka Runnable.
- Menggunakan runnable akan memberi Anda objek yang dapat dibagikan di antara banyak utas.