Thread: Testsinkronisasi - Java
Thread: Testsinkronisasi - Java
Thread: Testsinkronisasi - Java
TestSinkronisasi.java
class TestSinkronisasi {
private java.util.Random random = new java.util.Random();
public void callMe(String data) {
System.out.print("[");
try{
Thread.sleep(random.nextInt(200));
}catch(InterruptedException e) {
e.printStackTrace();
}
System.out.print(data);
try{
Thread.sleep(random.nextInt(200));
}catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println("]");
}
}
ThreadBaru.java
class ThreadBaru extends Thread {
private String data;
private TestSinkronisasi obj;
public ThreadBaru(TestSinkronisasi obj,String data) {
this.obj = obj;
this.data = data;
start();
}
public void run() {
obj.callMe(data);
}
}
DemoThread.java
class DemoThread {
public static void main(String[] args) {
TestSinkronisasi obj = new TestSinkronisasi();
ThreadBaru thread1 = new ThreadBaru(obj,"Superman");
ThreadBaru thread2 = new ThreadBaru(obj,"Batman");
ThreadBaru thread3 = new ThreadBaru(obj,"Spiderman");
//tunggu hingga semua child thread selesai dieksekusi
try{
thread1.join();
thread2.join();
thread3.join();
}catch(InterruptedException e) {
System.out.println("Thread utama diinterupsi " + e);
}
}
}
ThreadDasar.java
public class ThreadDasar extends Thread {
private int hitungMundur = 5;
private static int jumlahThread = 0;
public ThreadDasar() {
super("Thread ke-" + ++jumlahThread);
start();
}
/**
* @param args
*/
public static void main(String[] args) {
for(int i = 0; i < 5; i++)
new ThreadDasar();
}
}
PrioritasThread.java
public class PrioritasThread extends Thread {
private int hitungMundur = 5;
private volatile double d = 0; // No optimization
/**
* @param args
*/
public static void main(String[] args) {
new PrioritasThread(Thread.MAX_PRIORITY);
for(int i = 0; i < 5; i++)
new PrioritasThread(Thread.MIN_PRIORITY);
}
}
ThreadDaemon.java
public class ThreadDaemon extends Thread {
public ThreadDaemon() {
setDaemon(true); // Harus dipanggil sebelum start
start();
}
/**
* @param args
*/
public static void main(String[] args) {
for (int i = 0; i < 5; i++)
new ThreadDaemon();
}
JoinDemo.java
class ThreadPemalas extends Thread {
private int waktu;
grr.interrupt();
}
SelaluGenap.java
public class SelaluGenap {
private int i;
new Thread("Hansip") {
public void run() {
while (true) {
int nilai = genap.ambilNilai();
// Jika ganjil, keluar dan cetak nilainya
if (nilai % 2 != 0) {
System.out.println(nilai);
System.exit(0);
}
}
}
}.start();
while (true)
genap.berikut();
}
}