Tutorial Java: Mengenal Concurrency dengan Multi-Threading
Tutorial Information
Program | Java |
Version | JDK 6+ |
Difficulty | Pemula - Standar |
Estimated Time | 40 menit |
Download | Click this link |
Java SE didesain dapat mendukung pembuatan sebuah aplikasi concurrent. Artikel kali ini akan membahas bagaimana membuat sebuah aplikasi concurrent dasar melalui Application Programming Interface (API) milik Java SE yang terdapat dalam java.util.concurrent.
Dalam pemrograman concurrent terdapat dua unit dasar eksekusi yaitu Processes dan Threads. Sebuah komputer pada umumnya memiliki berbagai aktif processes dan threads yang berjalan secara bersamaan. Hal ini tidak terbatas oleh processor yang dimiliki oleh komputer. Multi processing dan Multi-Core Processor memang sangat membantu concurrency namun sebuah prosessor tanpa Multi Core pun tetap dapat menjalankan concurrency. Hal ini dimungkinkan dengan sebuah fitur yang ada pada Sistem Operasi yaitu time slicing.
Threads merupakan bagian dalam sebuah proses. Setiap proses memiliki paling sedikit sebuah thread. Resource yang dimiliki oleh sebuah proses dapat diakses oleh setiap thread yang berada di dalamnya. Pada bahasa pemrograman Java, pemrograman concurrent berfokus pada Threads.
Ide dasar dari pemrograman yang akan anda lakukan adalah membuat sebuah thread, memberhentikan sementara sebuah thread, menginterrupt sebuah thread, dan join pada thread.
Pembuatan Thread
Ada dua cara yang dapat digunakan untuk membuat sebuah thread baru. Yang pertama adalah dengan membuat sebuah objek thread dengan menyertakan sebuah objek yang mengimplementasikan interface Runnable.
1
2
3
4
5
6
7
8
9
10
| public class RunnableObject implements Runnable { @Override public void run() { System.out.println( "Aku ditulis melalui sebuah thread" ); } public static void main(String[] args) { new Thread( new RunnableObject()).start(); } } |
1
2
3
4
5
6
7
8
9
10
| public class ThreadObject extends Thread{ @Override public void run() { System.out.println( "Aku ditulis melalui sebuah thread" ); } public static void main(String[] args) { new ThreadObject().start(); } } |
Pause Thread
Sebuah thread dapat diberhentikan sementara. Salah satu cara yang dapat digunakan adalah dengan menggunakan method sleep() yang dimiliki oleh objek thread. Melalui method ini anda dapat memberhentikan sebuah thread selama selang waktu tertentu.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| public class PauseThread{ public static void main(String[] args) throws InterruptedException { System.out.println( "Aku ditulis" ); System.out.println( "(Selang 1 detik)" ); Thread.sleep( 1000 ); System.out.println( "melalui" ); System.out.println( "(Selang 1 detik)" ); Thread.sleep( 1000 ); System.out.println( "sebuah" ); System.out.println( "(Selang 1 detik)" ); Thread.sleep( 1000 ); System.out.println( "thread" ); } } |
Interrupt Thread
Interrupt menunjukkan bahwa sebuah thread harus berhenti melakukan apa yang sedang dikerjakan dan melakukan pekerjaan lainnya. Anda dapat menentukan apa yang akan dikerjakan sebuah thread jika ia di interrupt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| public class InterruptedThread extends Thread { @Override public void run() { try { System.out.println( "MyThread dimulai" ); System.out.println( "MyThread: silahkan tunggu 5 detik..." ); Thread.sleep( 5000 ); System.out.println( "MyThread selesai" ); } catch (InterruptedException ex) { System.out.println( "MyThread diinterrupt!" ); } } public static void main(String[] args) throws InterruptedException { System.out.println( "Main thread dimulai" ); Thread myThread = new InterruptedThread(); myThread.start(); System.out.println( "Main thread: silahkan tunggu 1 detik..." ); Thread.sleep( 1000 ); myThread.interrupt(); System.out.println( "Main thread selesai" ); } } |
Join Thread
Method join() pada objek thread memungkinkan sebuah thread untuk berhenti sementara hingga thread yang ia join telah selesai dieksekusi.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| public class JoinThread extends Thread{ @Override public void run() { try { System.out.println( "MyThread dimulai" ); System.out.println( "Silahkan tunggu 5 detik..." ); Thread.sleep( 5000 ); System.out.println( "MyThread selesai" ); } catch (InterruptedException ex) { System.out.println( "MyThread di interrupt!" ); } } public static void main(String[] args) throws InterruptedException { System.out.println( "Main thread dimulai" ); Thread myThread = new JoinThread(); myThread.start(); System.out.println( "Main thread joining myThread" ); myThread.join(); System.out.println( "Main thread selesai" ); } } |
0 komentar:
Posting Komentar