10 Multithreading Java
10 Multithreading Java
Thread 1
Thread 2
Thread 3
m1.start();
m2.start();
}
}
class Mobil extends Thread{
//konstruktor
public Mobil(String id){
super(id);
}
//mendefinisikan sendiri run()
public void run() {
String nama = getName();
for (int i=0; i<5; i++) {
try{
sleep(1000); //tunggu 1 detik
}
catch(InterruptedException ie){
System.out.println("terinterupsi");
}
System.out.println("Thread " + nama + " :Posisi " + i);
}
}
}
Mobil m1 = new Mobil(“M-1”) class Mobil extends Thread{
m1.start();
…
public void run() {
}
Runnable sesungguhnya adalah sebuah
interface.
Dengan mengimplementasikan interface ini,
sebuah kelas yg menangani thread dapat
diciptakan.
public class Ujithread2 {
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();
}
}
class Mobil implements Runnable{
String nama;
//konstruktor
public Mobil(String id) {
nama=id;
}
public void run() {
for(int i=0; i<5; i++) {
try{
Thread.currentThread().sleep(1000);
}
catch(InterruptedException ie){
System.out.println("terinterupsi");cr
}
System.out.println("Thread " + nama + " :Posisi " + i);
}
}
}
Sebuah Thread terus dieksekusi sampai salah
satu kondisi berikut terjadi :
1. Eksekusi terhadap run() berakhir
2. Terinterupsi oleh eksepsi yg tidak tertangkap
3. Metode stop() dipanggil
public class Ujithread{
public static void main(String[] args){
Mobil m1 = new Mobil("M-1");
Mobil m2 = new Mobil("M-2");
m1.start();
m2.start();
}
}
class Mobil extends Thread{
//konstruktor
public Mobil(String id){
super(id);
}
// beri komentar ketika thread berakhir
boolean m1Berakhir = false;
boolean m2Berakhir = false;
do{
//cek keberadaan thread m1
if (!m1Berakhir && !m1.isAlive()) {
m1Berakhir = true;
System.out.println("Thread m1 berakhir");
}
// cek keberadaan thread m2
if (!m2Berakhir && !m2.isAlive()) {
m2Berakhir = true;
System.out.println("Thread m2 berakhir");
}
}while (!m1Berakhir || !m2Berakhir);
//mendefinisikan sendiri run()
public void run() {
String nama = getName();
for (int i=0; i<5; i++) {
try{
sleep(1000); //tunggu 1 detik
}
catch(InterruptedException ie){
System.out.println("terinterupsi");
}
System.out.println("Thread " + nama + " :Posisi " + i);
}
}
}
Sinkronisasi merupakan suatu upaya agar kode
tertentu dijalankan secara berurutan dengan
jaminan kode tersebut tdk akan dijalankan oleh
yg lain dlm waktu bersamaan.
public class Ujithread4{
public static void main(String[] args){
Mobil m1 = new Mobil("M-1");
Mobil m2 = new Mobil("M-2");
m1.start();
m2.start();
}
}
class Mobil extends Thread{
//konstruktor
public Mobil(String id){
super(id);
}