Skip navigation

Tag Archives: Multithread


Kemarin saya dijebak diminta untuk mengisi pelatihan Java untuk OSUM UPI. Saya membawa sesi terakhir dari 6 sesi pelatihan. Pelatihan ini diadakan setiap Sabtu selama 3 minggu di mana setiap hari terdapat 2 sesi. Pelatihan ini ditujukan bagi mahasiswa UPI dan untuk tingkat pemula. Awalnya saya dijebak diminta untuk mengisi materi Netbeans Platform. Tapi agaknya terlalu jauh melompat tingkatnya. Akhirnya saya menawarkan mengisi materi konkurensi di Java.

Materi yang saya bawakan adalah pengantar konkurensi. Saya mengenalkan tentang Thread dan fitur-fitur manajemen Thread yang disediakan oleh Java seperti sleep, interrupt, join, dan wait (yang terakhir ditambahkan di detik-detik terakhir). Selain itu saya juga mengenalkan metode untuk sinkronisasi antar Thread. Dan terakhir saya menyinggung sedikit mengenai Timer.

Modul pelatihan dan slide presentasi dapat dilihat di bawah.

Read More »


Cuman snippets aja, kadang-kadang suka lupa gimana cara pakai multithread di Java. ^_^

import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Petra Barus
 */
public class ReadWrite1 implements Runnable {

    //
    public static int countwriter = 0;
    public static int countreader = 0;
    //
    public static final int READER = 0;
    public static final int WRITER = 1;
    //
    private int type;
    private int id;
    private String strid;

    public ReadWrite1(int type) {
        this.type = type;
        this.strid = (type == READER) ? ("Reader " + (this.id = ++countreader)) : ("Writer " + (this.id = ++countwriter));
    }

    public static void main(String[] argv) {
        (new Thread(new ReadWrite1(READER))).start();
        (new Thread(new ReadWrite1(READER))).start();
        (new Thread(new ReadWrite1(WRITER))).start();
    }

    public void run() {
        if (type == READER) {
            read();
        } else if (type == WRITER) {
            write();
        }
    }

    //*********************************************************
    // Reader
    //*********************************************************
    /**
     *
     */
    public void read() {
        System.out.println(strid + ": start!");
        while (true) {
            System.out.println(strid + ": reading!");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException ex) {
                Logger.getLogger(ReadWrite1.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    //*********************************************************
    //*********************************************************
    // Writer
    //*********************************************************

    public void write() {
        System.out.println(strid + ": start!");
        while (true) {
            System.out.println(strid + ": writing!");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException ex) {
                Logger.getLogger(ReadWrite1.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    //*********************************************************
}

Contoh keluarannya
Read More »

%d blogger menyukai ini: