Monday, August 24, 2009

Multithreading (bagian 1) - Animasi Titlebar


Microsoft dikenal sebagai siatem operasi multitasking, karena sistem operasi ini memungkinkan beberapa aplikasi berjalan secara bersamaan. Misalnya, sambil mengetik dokumen di Microsoft Word, dapat dilakukan sambil mendengarkan musik dengan Winamp. Istilah multitasking ini biasanya diberikan kepada sistem operasi yang memiliki kemampuan menjalankan beberapa aplikasi dalam waktu yang bersamaan.

Istilah multithreading diberikan untuk level aplikasi. Misalnya aplikasi Winamp. Saat kita mendengarkan musik atau melihat film di Winamp, pada titlebar ditampilkan tulisan judul lagu yang bergerak, waktu yang telah dilalui dan juga waktu yang tersisa serta jam sekarang. Kemampuan sebuah aplikasi menjalankan beberapa proses sekaligus inilah yang dinakaman multithreading.

Bahasa pemrograman yang mampu menghasilkan aplikasi multithreading
dinamakan bahasa pemerograman multithreading, misalnya Java, Visual Basic dan Delphi.

Penerapan multithreading pada Java.

Contoh penerapan multithreading pada Java misalnya aplikasi dengan tulisan pada titlebar yang bergerak yang akan kita bahas sebentar lagi.

Ada 2 (dua) cara menerapkan multithreading pada aplikasi Java.
Pertama, dengan membuat kelas turunan dari kelas java.lang.Thread
Kedua, dengan membuat kelas yang mengimplementasikan interface java.lang.Runnable

Sebuah aplikasi Java setidaknya harus memiliki satu thread, yaitu thread untuk menjalankan aplikasi Java itu sendiri. Untuk kasus animasi titlebar ini, terdapat dua thread, yaitu thread untuk mengubah titlebar dan thread untuk menjalankan aplikasi itu.

Pada aplikasi animasi titlebar ini misalnya kita menerapkan dua cara penerapan thread, yaitu membuat kelas turunan dari kelas Thread dan yang satunya dengan mengimplementasikan interface Runnable.

Thread pertama untuk menganimasi titlebar, buat dengan membuat kelas turunan dari kelas Thread, misalnya sebagai berikut:

package animasititlebar;

import javax.swing.JFrame;

public class ProsesTitleBar extends Thread
{
public ProsesTitleBar(JFrame titleBar, String judul)
{
this.titleBar = titleBar;
this.judul = judul;

start();
}

public void run()
{
String tampung1, tampung2;
int ambil = 0;
while(true)
{
tampung1 = judul.substring(0, ambil);
tampung2 = judul.substring(ambil, judul.length());
titleBar.setTitle(tampung2 + tampung1);
try
{
Thread.sleep(1000);
}
catch(InterruptedException i)
{
}
ambil++;
if(ambil == judul.length())
{
ambil = 0;
}
}
}

/*********************************/
private JFrame titleBar = new JFrame();
private String judul = new String();
}
sedangkan untuk thread utama digunakan implementasi dari interface Runnable, misalnya berikut:

package animasititlebar;

import javax.swing.SwingUtilities;
import javax.swing.JFrame;

/**
*
* @author Umar Faisol, S.Si
*/

public class Main implements Runnable
{
public void run()
{
System.out.println("Animasi TitleBar...");
JFrame.setDefaultLookAndFeelDecorated(true);
new AnimasiTitleBar().setVisible(true);
}

public static void main(String[] args)
{
SwingUtilities.invokeLater(new Main());

}
}
Hasilnya adalah sebagai berikut:


Download Source code AnimasiTitleBar.zip