BAB VIII
THREAD DAN MULTITHREADING
8.1 TUJUAN PRAKTIKUM
a. Memahami
Thread pada java
b. Memahami penggunaan Thread
8.2 DASAR TEORI
8.2.1
Thread
1.
Thread adalah sekumpulan instruksi (proses) yang dieksekusi
secara independen
2.
Multithreading adalah suatu kemampuan yang memungkinkan
beberapa kumpulan instruksi (proses) dijalankan secara bersama (time slicing)
dalam sebuah program.
3.
Multithreading bermanfaat untuk membuat proses yang
interaktif, misalnya pada program permainan (game). Program tetap dapat
menggerakan beberapa objek sambil member kesempatan pengguna melakukan respon
melalui mouse atau keyboard.
8.2.2 Sinkronisasi
·
Pada beberapa kondisi, proses secara bersamaan terkadang
tidak memungkinkan.
·
Contohnya adalah proses I/O stream khususnya pada proses
membaca dan menulis suatu data atau file
·
Proses thread pembacaan atau penulisan data menjadi tidak
benar karena seharusnya data dan file tersebut berubah-ubah (sedang dibuka dan
ditulis oleh thread lain).
·
Untuk kondisi diatas perlu dilakukan sinkronisasi dengan
menggunakan keyword synchronized.
8.2.3 Cara Penggunaan Synchronized
·
Sinkronisasi pada method : mendeklarasikan suatu
method dengan menggunakan keyword synchronized.
·
Sinkronisasi pada objek : menambahkan blok
dibawah pada pemanggilan objek Synchronized(objek){
…
}
8.2.4
Prioritas Thread
·
Method setPriority(int level) dapat dipanggil
untuk menentukan prioritas thread
·
Nilai level bisa berupa bilangan bulat dari
1-10.
·
Prioritas normal memiliki nilai level 5
·
Tidak semua system operasi mendukung operasi
ini, sehingga kadang pemanggilan method ini tidak memberikan efek apa-ap
8.3 HASIL DAN PEMBAHASAN
File Name :
ThreadBeraksi1.java
|
//membuat
bisa jga untuk mendifinisikan class
class Mobil
implements Runnable{
//mendifinisikan
jenis dan tipe data variable
String nama;
//untuk
menafsirkan method pada class
public
Mobil(String id){
nama = id;
}
//manafsirkan
method pada class
public void
run(){
//untuk
kondisi pengulangan
for(int i=0;
i<5; i++){
//digunakan
Karena terdapat eksepsi
try{
//menyatakan
pengulangan akan diproses dengan jeda 1 detik
Thread.currentThread().sleep(1000);
//pasangan
dari try,dan akan memproses terjadinya eksepsi
}catch(InterruptedException
ie){
//akan
menampilkan hasil ke layar
System.out.println("Terinturipsi");
}
//mencetak
nilai Thread pada layar
System.out.println("Thread:"+nama+":posisi"+i);
}
}
}
//menyatakan
bahwa kelas dapat diambil alih oleh kelas lain atu menjadi kelas utama
public class
ThreadBeraksi1{
//pembuatan
objek
public static
void main(String[]args){
Thread m1 =
new Thread(new Mobil("M-1"));
Thread m2 =
new Thread(new Mobil("M-2"));
m1.start();
m2.start();
}
}
|
Program diatas
adalah semacam pengulangan namun ketika run keduanya ada posisi yang yang
berbeda karrena itu adalah fungsi dari public void run,namun ketika di run
kembali akan menghasilkan hasil yang sama seperti yang pertama Karena itu
adalah fungsi try{
File Name :
ThreadBeraksi2.java
|
class Mobil extends Thread{
public Mobil(String id){
super(id);
}
public void run(){
String nama = getName();
for(int i=0; i<5; i++){
try{
sleep(1000);
}catch(InterruptedException ie){
System.out.println("Terinterupsi");
}
System.out.println("Thread
"+nama+":Posisi"+i);
}
}
}
public class ThreadBeraksi2{
public static void main(String[] args){
Mobil m1=new Mobil("M-1");
Mobil m2=new Mobil("M-2");
m1.start();
m2.start();
}
}
|
Analisis:
Program ini sama
dengan program diatas namun ada sedikit yang ditambahkan pada sintak ini dan
akan pada hasilnya pada m-1 dan m-2 posisinya akan terbalik jadi m-2 yang
terlebih dahulu ditampilkan.
File Name :
ThreadBeraksi3.java
|
class Mobil extends Thread {
public
Mobil (String id) {
super(id);
}
public
void run(){
String
nama = getName();
for(int
i=0; i<5; i++){
try{
sleep(1000);
}catch(InterruptedException ie){
System.out.println("Terinterupsi");
}
System.out.println("Thread "+nama+" : Posisi "+i);
}
}
}
public class ThreadBeraksi3 {
public
static void main (String[] args) {
Mobil
m1 = new Mobil ("M-1");
Mobil
m2 = new Mobil ("M-2");
m1.start();
m2.start();
boolean
m1Berakhir = false;
boolean
m2Berakhir = false;
do{
if(!m1Berakhir && !m1.isAlive()){
m1Berakhir = true;
System.out.println("Thread m1 berakhir");
}
if(!m2Berakhir && !m2.isAlive()){
m2Berakhir = true;
System.out.println("Thread m2 berakhir");
}
}while
(!m1Berakhir || m2Berakhir);
}
}
|
Analisis:
Program ini sama
seperti diatas tapi disini ada beberapa tambahan seperti dalam sintaknya
seperti if dan while yang akan mengahsilkan keluaran seperti gambar diatas dan
pengubahan posisi dalam hasilnya.
File Name :
ThreadBeraksi4.java
|
class Mobil extends Thread {
public Mobil (String id){
super(id);
}
public void run(){
String nama=getName();
SinkronisasiKeluaran.info(nama);
}
}
class SinkronisasiKeluaran{
public static synchronized void info (String
nama){
for (int i=0; i<5; i++){
try{
Thread.sleep(1000);
}catch(InterruptedException ie){
System.out.println("Terinterupsi");
}
System.out.println("Thread
"+nama+":posisi"+i);}
}
}
public class ThreadBeraksi4{
public static void main(String[]args){
Mobil m1 = new Mobil("M-1");
Mobil m2 = new Mobil("M-2");
m1.start();
m2.start();
}
}
|
Analisis:
Pada program ini
threadnya akan menampilkan nomor 0 pada run pertama dan kedu sedangkan run
ketiga dank e empat akan menampilkan
nomor 1. Dan dalam posisi akan menampilkan urutan nomor dari 0-4 dan begitupun
seterusnya Karena didalam program ini ada pogram pengulangan.
File Name :
ThreadBeraksi5.java
|
class Mobil extends Thread{
public Mobil(String id){
super(id);
}
public void run(){
synchronized(this){
String nama = getName();
SinkronisasiKeluaran.info(nama);
}
}
}
class SinkronisasiKeluaran{
public static synchronized void info (String
nama){
for(int i=0; i<5; i++){
try{
Thread.sleep(1000);
}catch(InterruptedException ie){
System.out.println("Terinterupsi");
}
System.out.println("Thread"+nama+":posisi"+i);}
}
}
public class ThreadBeraksi5{
public static void main(String[]args){
Mobil m1 = new Mobil("M-1");
Mobil m2 = new Mobil("M-2");
m1.start();
m2.start();
}
}
|
Program diatas
sama seperti sebelumnya namun ada perbedaan Pada program ini threadnya akan
menampilkan nomor 1 pada run pertama dan kedu sedangkan run ketiga dank e
empat akan menampilkan nomor 2. Dan
dalam posisi akan menampilkan urutan nomor dari 0-4 dan begitupun seterusnya
Karena didalam program ini ada pogram pengulangan.
Analisis:
Analisis:
Analisis :
Gambar diatas adalah awal dari pembuatan login pada aplikasi VB.
BAB IX
PACKAGE & INTERFACE
9.1 TUJUAN PRAKTIKUM
a. Memahami
konsep penggunaan paket
b. Dapat memaketkan beberapa
class dalam satu paket
c. Memahami penggunaan
interface
9.2 DASAR TEORI
9.2.1
Package
dan Interface
Package dalam
java berarti pengelompokan beberapa class dan Interface dalam satu unit. Fitur
ini menyediakan mekanisme untuk mengatur class dan interface dalam jumlah
banyak dan menghinddar konflik pada penanaman.
9.3 Hasil dan Pembahasan
9.3.1
Paket
- Package
adalah koleksi dari beberapa class dan interface yang berhubungan, dan
menyediakan proteksi akses dan pengelolaan name space.
- Satu
paket adalah 1 subfolder di file system.
- Package
sangat berguna untuk mengorganisir file dalam suatu paket atau library
File Name : Mobil.java
|
package
Kendaraan;
//untuk mengorganisir
file dalam satu paket atau folder
public
class Mobil{
//untuk
menyatakan bahwa kelas dapat diakses oleh kelas lain dan dimanapun
public
void info(){
//untuk
menyatakan kondisi pengulangan
System.out.println("Ini
kelas mobil");
//untuk memunculkan
hasil dari program
}
}
|
File Name : Motor.java
|
package
Kendaraan;
//untuk
mengorganisir file dalam satu paket atau folder
public
class Motor{
//untuk
menyatakan bahwa kelas dapat diakses oleh kelas lain dan dimanapun
public
void info(){
//untuk
menyatakan kondisi pengulangan
System.out.println("Ini
kelas motor");
//untuk
memunculkan hasil dari program
}
}
|
File Name : Sepeda.java
|
package
Kendaraan;
// untuk
mengorganisir file dalam satu paket atau folder
public
class Sepeda{
//
public void
info(){
//untuk
menyatakan kondisi pengulangan
System.out.println("Ini
kelas sepeda");
//untuk
memunculkan hasil dari program
}
}
|
·
Program diatas tidak akan akan tidak bisa
dipanggil Karena menggunakan package yang berarti membuat folder baru yaitu
kendaraan.agar bisa memanggil 3 program diatas kita harus mengganti nama
filenya pada integrated terminalnya seperti gambar dibawah:
File Name : AlatTranfortasi.java
|
import
Kendaraan.Motor;
import
Kendaraan.Mobil;
import
Kendaraan.Sepeda;
public
class AlatTransportasi{
public
static void main(String[]args){
Motor
motorku=new Motor();
motorku.info();
Mobil
mobilku=new Mobil();
mobilku.info();
Sepeda
sepedaku=new Sepeda();
sepedaku.info();
}
}
|
·
Program
dapat di panggil Karena mempunyai man classnya dan saling terhubung dengan
program Mobil,Motor,dan Sepeda diatas,namun sebelum menjalankan program
AlatTransportasi kita ubah kemabali nama usernya seperti sebelumnya seperti
gambar diatas.
9.3.2
Interface
- Interface
berisi kumpulan nama metode tanpa implementasi aktual.
- Interface
digunakan apabila kita ingin menentukan apa yang harus dilakukan oleh suatu
class tetapi tidak menentukan bagaimana cara untuk melakukannya.
- Interface
mirip dengan class, tetapi hanya memiliki deklarasi method tanpa implementasi.
File Name :PabrikBaru.java
|
interface
Pabrik{
static final
String PROVINSI ="Jawa Barat";
public void
setNama(String namaBaru);
public void
setAlamat(String alamatBaru);
public String
getNama();
public String
getAlamat();
}
class PabrikSepatu
implements Pabrik{
String
nama,alamat ;
public
PabrikSepatu(String namaBaru,String alamatBaru){
nama=namaBaru;
alamat=alamatBaru;
}
public void
setNama(String namaBaru){
nama=namaBaru;
}
public void
setAlamat(String alamatBaru){
alamat=alamatBaru;
}
public String
getNama(){
return nama;
}
public String
getAlamat(){
return
alamat;
}
public String
getProvinsi(){
return
PROVINSI;
}
public String
toString(){
return
"Nama
:"+nama+"\n"+
"Alamat
:"+alamat+"\n"+
"Provinsi
:"+PROVINSI+"\n";
}
}
public class
PabrikBaru{
public static
void main(String[] args){
test();
}
static void
test(){
PabrikSepatu
SupplierSepatu;
SupplierSepatu=new
PabrikSepatu("Adidas","Jalan Merdeka 123");
System.out.println("Informasi
perusahaan : "+"\n"+SupplierSepatu);
}
}
|
Pada program ini dibuat untuk mengemukakan
sebuah pabrik sepatu dan dapat di implementasikan dan mengisi data datanya
BAB
X
GRAPHICAL
USER INTERFACE (GUI)
10.1
Tujuan
Praktikum
a. Mengetahui
Konsep GUI di Java dan Komponen dasar Swing
b. Penanganan
Kejadian (Event Handling)
c. Membuat
GUI dengan Netbeans
10.2
Dasar
Teori
10.2.1
Pengertian
Java GUI
Java
GUI (Graphical User Interface) adalah pemrograman dengan menggunakan bahsa Java
yang dibuat menggunakan aplikasi yang berbasi GUI.
Tujuan
Java GuI adalah untuk menambahkan komponen-komponen yang tidak bisa dibuat
dalam basis text seperti tombol, gambar, dll. Selain itu Java Gui digunakan
untuk memudahkan user menggunakan Pogram yang dibuat tersebut [1].
10.2.2
Macam-Macam
Java GUI
a.
AWT
(Abstract Window Toolkit)
AWT (Abstract Window Toolkit) ini adalah
GUI Toolkit pertama pada bahasa pemrograman Java, AWT ini masih sangat
kekurangan komponen yang biasa digunakan untuk membangun sebuah aplikasi
desktop secara lengkap Sehingga aplikasi yang dibangun menggunakan AWT akan tampak seperti aplikasi native.
Maksudnya yaitu, jika aplikasi yang dibangun menggunakan AWT (Abstract Window
Toolkit) ini dijalankan pada Sistem Operasi Windows. Maka aplikasi ini akan
terlihat seperti aplikasi Windows pada umum-nya, dan begitu juga jika
dijalankan pada Sistem Operasi Mac ataupun GNU/Linux. Hal itu karena AWT (Abstract Window Toolkit) ini
benar-benar memanggil native subrutin untuk menggambar setiap komponen-nya ke
layar. AWT dikembangkan Oleh Sun Microsystem dari Oracle. Untuk sekarang, Sun
Microsystem tidak merekomendasikan lagi penggunaan komponen GUI dari AWT.
b. Swing/JFC (Java
Foundation Class)
Java Swing adalah library java yang
digunkan untuk menciptakan Grafik User Interface (GUI). Dengan Java Swing maka dapat membuat user
interface yang cross platform (berbeda platform) atau OS independent. Artinya
user interface yang dibuat dapat dijalankan pada system operasi apa saja yang
Suport pada Java dengan tampilan yang relative sama. Selain itu dapat pula
membuat user interface yang menyerupai Windows XP, Mac OS atau Linux tanpa
tergantung dari OS yang kita gunakan. SWING merupakan salah satu bagian dari
Java Foundation Classes (JFC). Dimana pada JFC ini terdapat fasilitas untuk
menambahkan Rich Graphic Functionality. Swing/JFC merupakan komponen GUI
terbaru dari Java yang direkomendasikan Sun Microsystem untuk pemrograman Java
GUI, Komponennya sebagian besar merupakan tiruan dari AWT dan versi lengkap
dari AWT.
c. SWT (Standart Widget
Tookit)
SWT (Standart Widget Toolkit) adalah
sebuah GUI Toolkit yang dikeluaran oleh IBM sebagai alternatif dari AWT/Java
Swing milik SUN Microsystem, yang membedakan antara SWT (Standart Widget
Toolkit) dan AWT/Java Swing adalah SWT ini benar-benar mengakses native GUI
library yang terdapat pada Sistem Operasi melalui JNI (Java Native Interface).
Dengan model seperti ini, memungkinkan tampilan aplikasi yang dibangun
menggunakan GUI Toolkit SWT menjadi sama persis dengan aplikasi native
lain-nya. Kekurangan dari model pemanggilan native GUI library seperti ini
adalah kita harus menyediakan library untuk tiap-tiap Sistem Operasi target
aplikasi kita.
d. QtJambi
Qt Jambi adalah toolkit GUI yang
dikembangkan oleh nokia, tetapi sekarang Nokia telah menghentikan Proyeknya.
Tetapi ada beberapa developer yang melanjutkan pengembangannya yaitu oleh
QtJambi Comunity.
e. JavaGNOME
Java Gnome hampir sama dengan SWT dan
QT Jambi yaitu mengakses native library tetapi API yang digunakan adalah API
dari GTK.
10.2.3
Komponen
Dasar Swing
Ada
lima komponen dasar Swing yaitu:
1.
Top-level
Container, merupakan container dasar di mana
komponen lainnya diletakan. Contohnya adalah Frame, Dialog dan Applet yang
diimplementasi dalam class JFrame, Jdialog, dan JApplet.
2.
Intermediate
Container, merupakan komponen perantara di mana
komponen lainnya akan diletakan. Salah satu contoh container ini adalah class
JPanel.
3.
Atomic
Component, merupakan komponen yang memiliki fungsi
spesifik dan biasanya user berinteraksi langsung dengan komponen jenis ini.
Contohnya adalah JButton, JLabel, JTextField, dan JTextArea.
4.
Layout
Manager, berfungsi untuk mengatur bagaimana
posisi dari komponen – komponen yang diletakan pada container. Secara default
terdapat 5 macam layout yaitu berupa class BorderLayout, BoxLayout, FlowLayout,
GridBagLayout, dan GridLayout.
5.
Event
Handling, untuk menangani event yang dilakukan
oleh user misalnya menekan tombol, mengkilik mouse dan lain – lain.
10.2.4 Fitur-fitur pada Swing
Ada
7 Fitur utama dari Swing Yaitu:
1.
Swing
GUI Component
Swing Toolkit memiliki beragam komponen
GUI, mulai dari komponen sederhana (button, check boxes) hingga komponent
komplex seperti tabel dan text. Anda pun dapat membuat komponen anda sendiri.
2.
Java
2D API
Dengan Java 2D API , kita dapat dengan
mudah menambahkan images, drop shadow, dan lain lain kedalam aplikasi GUI kita.
3.
Pluggable
Look and Feel Support
Setiap program yang menggunakan Swing
Component, dapat diubah tampilannya. Banyak sekali pilihan tampilan yang
nantinya dapat kita gunakan dalam pembuatan GUI ini.
4.
Data Transfer
Anda dapat menerapkan Data Transfer
(Copy, Paste, Drag and Drop pada Swing)
5.
Internationalization
Dengan adanya Internationalization,
developer dapat membuat software sesuai dengan bahasa negaranya
sendiri-sendiri, juga mensupport character dari berbagai negara seperti
Japanese, Chinese, Korean.
6.
Undo
Framework API
Dengan Swing Undo Framework, maka
developer dapat menggunakan undo dan redo seperti pada text component. Java
Swing mensupport unlimited undo dan redo.
7.
Flexible
Deployment Support
Swing dapat dideploy ke dalam Applet yang
dijalankan via browser. Dapat juga dideploy ke dalam standalone application
dengan Java Web Start sebagai Standard Destop Application.
10.2.5 Penggunaan Top Level
Container
1.
Komponen GUI akan
ditampilkan sebagai bagian dari containment hierarcy.
-
Aplikasi GUI berbasis
swing paling tidak memiliki satu containment hierarcy dengan Jframe sebagai
rootnya.
-
Jika sebuah aplikasi
memiliki satu windoe utama dan dua dialog artinya aplikasi tersebut memiliki
tiga containment hierarcy dan jua tiga top level container.
-
Satu containment
hierarchy memiliki Jframe sebagai root , dan dua yang lainnya memiliki Jdialog
sebagai root.
2.
Setiap komponen GUI hanya
dapat dimuat pada satu top level container.
3.
Dapat menambahkan menubar
pada top level container.
10.3
Hasil
dan Pembahasan
Membuat insert dan delete dengan
Vb
Gambar diatas adalah awal dari pembuatan login pada aplikasi VB.
Pada gambar diatas adalah
pembuatan formnya
Gambar adalah pengisian data, untuk memasukan data tersebut dengan cara
menekan insert.
Gamba diatas menunjukan bahwa data tersebut sudah di hapus dengan
menekan tombol delete