Thread dengan Java

sekarang saya akan coba memberikan sebuah contoh sederhana membuat program multithread dengan java.

kasus:

penjumlahan bilangan – bilangan yang terdapat dalam 3 buah array (tipe integer). dengan aturan bahwa tiap bilangan pada satu array hanya dijumlahkan dengan bilangan pada array yang lain yang memiliki index yang sama

array 1 : 1 2 3 4 5

array 2 : 6 7 8 9 10

array 3 : 11 12 13 14 15

——————————+

jml : 18 21 24 27 30

asumsi: ukuran array sama (5)

menghitung penjumlahan ini secara linear tentu juga sangat mudah, tinggal melakukan iterasi dan lakukan penjumlahan:

// solusi linear
for (int h = 0; h < arr1.length; h++){ System.out.printf("sum[%d] = %d\n",h, arr1[h] + arr2[h] + arr3[h]); } [/sourcecode]cara lain untuk melakukan penghitungan adalah dengan memanfaatkan thread, karena setiap perhitungan adalah independen satu sama lain di setiap index-nya maka kita dapat mendedikasikan satu thread untuk setiap operasi penjumlahan tersebut, wah sia2 dong? mungkin iya untuk kasus ini, tapi demi kepentingan membuat contoh pemanfaatan thread, dan yang lebih penting lagi, yang merupakan alasan saya membuat contoh ini adalah, jika anda membayangkan masing - masing operasi penjumlahan tersebut adalah sebuah operasi yang memerlukan waktu yang panjang, maka akan lebih baik untuk memanfaatkan thread bukan?, bayangkan jika anda memilih cara linear, satu operasi baru di jalankan setelah operasi lain berhenti, wah bisa lama dong. disamping itu saat ini sudah jamak penggunaan processor multicore, kemampuan anda untuk memahami threading akan membantu anda untuk memaksimalkan kinerja processor (melakukan eksekuse secara paralel alih - alih secara serial). membuat thread dalam java ada 2 cara, yang membuat kelas yang di turunkan dari kelas Thread, atau kelas yang mengimplementasikan (implements) interface Runnable. untuk sekarang saya memilih cara pertama: [sourcecode language='java'] /** kelas simpleThread file simpleThread.java */ public class simpleThread extends Thread{ private String threadName; private int sum; private int num1, num2, num3; public simpleThread(String name){ super(); threadName = name; } public void setNum(int n1, int n2, int n3){ num1 = n1; num2 = n2; num3 = n3; } public void run(){ try{ sum = num1 + num2 + num3; System.out.printf("%s calculate %d+%d+%d = %d \n", threadName,num1,num2,num3,sum); Thread.sleep(100); }catch(InterruptedException ex){ ex.printStackTrace(); } } } /** kelas threadTester file threadTester.java, fungsi: tester thread*/  public class threadTester { public static void main(String[] args){ int[] arr1 = {1,2,3,4,5}; // array 1 int[] arr2 = {6,7,8,9,10}; // array 2 int[] arr3 = {11,12,13,14,15}; // array3 // solusi linear for (int h = 0; h < arr1.length; h++){ System.out.printf("sum[%d] = %d\n",h, arr1[h] + arr2[h] + arr3[h]); } // solution 2 : multi thread for (int i=0; i < arr1.length ; i++){ simpleThread st = new simpleThread("Thread "+i); st.setNum(arr1[i], arr2[i], arr3[i]); st.start(); } //st1.stop(); } } [/sourcecode]outputnya kurang lebih begini: Thread 0 calculate 1+6+11 = 18 Thread 2 calculate 3+8+13 = 24 Thread 4 calculate 5+10+15 = 30 Thread 1 calculate 2+7+12 = 21 Thread 3 calculate 4+9+14 = 27 anda lihat, perhitungan tidak di lakukan secara linear. tentunya solusi ini masih bukanlah solusi terbaik (namanya juga contoh sederhana :) ), dan bahkan aneh :D dan tugas anda adalah membuat solusi lebih baik lagi hihi, selamat belajar :D

5 thoughts on “Thread dengan Java

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s