Skip navigation

Monthly Archives: Desember 2009


Cuman numpang posting source code. Know what, mata kuliah High Performance System menurut saya adalah salah satu mata kuliah yang unik. Tugasnya dari awal sampai akhir hanya melakukan perkalian matriks. Tapi yang menarik perkalian matriks ini dilakukan dalam berbagai cara dengan menggunakan fitur, pustaka, ataupun mesin berkinerja tinggi. Semua cara ini nantinya akan dibandingkan dengan cara perkalian matriks yang naif dan serial.
Berikut adalah kodenya
Read More »


Di salah satu kuliah yakni High Performance System sering dibutuhkan fungsi untuk menghitung durasi waktu. Salah satu fungsi yang dapat dipakai adalah clock_gettime yang menyediakan ketelitian hingga nanosecond. Fungsi ini menggunakan struktur data yakni timespec yang juga didefinisikan di header time.h.
Read More »


  • Moore’s Law
    Number of transistors on a single piece of silicon doubles every 19-24 months
  • Gilder’s Law
    Network bandwith capacity triples every 12 months
  • Meltcalfe’s Law
    Value of network increases exponentially as number of participants increases
  • Fitt’s Law
    The time required to rapidly move to a target area is a function of the distance and the size of the target
  • Kincaid’s Law
    The amount of fun you’re having at a party is inversely proportional to the number of times you’ve tweeted about it.

Got from here.

(update: Fitt’s Law thanks to Peb)

(update: Kincaid’s Law from here)


I am a big fan of Plurk (literally). And since they officially open up their API last Saturday, I’ve been working to build a Java ME version of the client these 3 days.

Here’s the screenshot. It’s not quite ready yet. But it’s nice to know that the app is getting its form.

(click to enlarge)


Masih melanjutkan tentang The Readers and Writers Problem. Java sudah menyediakan fitur Lock khusus untuk model permasalahan ini yakni ReadWriteLock yang disediakan oleh Concurrent APInya Java. Locking ini mempunyai 2 buah Lock yakni ReadLock yang dapat dimiliki beberapa Reader selama tidak ada Writer yang berjalan dan WriteLock yang ekslusif untuk sebuah Writer. Penggunaannya sangat mirip pada postingan sebelumnya. Kita perlu membuat sebuah instance dari ReadWriteLock tersebut. Karena ReadWriteLock hanya berupa Interface maka kita pakai Class yang sudah ada yakni ReentrantReadWriteLock (meski dengan mudahnya kita dapat membuat sebuah Class ReadWriteLock baru dengan menggunakan kode pada postingan sebelum ini)

    private static ReentrantReadWriteLock rwlock = new ReentrantReadWriteLock();
    private static Lock rlock = rwlock.readLock();
    private static Lock wlock = rwlock.writeLock();

Read More »


Cuman mau ngetes fitur wordpress yang bisa publikasi langsung di twitter. Follow twitter.com/maleskoding untuk postingan blog ini atau twitter.com/petrabarus untuk mengenal saya lebih jauh 🙂

Untuk lebih jelasnya dapat dicoba di berita resminya.


Melanjutkan postingan sebelumnya tentang masalah The Readers and Writers Problem. Untuk memberikan hak ekslusif bagi Writers untuk menulis file maka diperlukan sebuah mekanisme locking. Mekanisme ini akan coba diimplementasikan pada sebuah class bernama Lock.

class Lock {

        public static int countRequestingWriter = 0;
        public static int countRunningWriter = 0;
        public static int countRunningReader = 0;

        public synchronized void lockRead() throws InterruptedException {
            while (countRunningWriter > 0 || countRequestingWriter > 0) {
                wait();
            }
            countRunningReader++;
        }

        public synchronized void unlockRead() {
            countRunningReader--;
            notifyAll();
        }

        public synchronized void lockWrite() throws InterruptedException {
            countRequestingWriter++;
            while (countRunningReader > 0 || countRunningWriter > 0) {
                wait();
            }
            countRequestingWriter--;
            countRunningWriter++;
        }

        public synchronized void unlockWrite() {
            countRunningWriter--;
            notifyAll();
        }
    }

Ketika lock akan dipakai oleh sebuah thread untuk melakukan write locking, maka lock akan memeriksa apakah sedang dilakukan reading atau writing. Jika ada maka lock akan menunggu. Ketika thread lain selesai melakukan tugasnya maka lock akan memberitahu thread yang menungu itu untuk memeriksa lagi. Jika berhasil maka thread akan menambahkan nilai variabel tersebut. Variabel ini bertugas sebagai semacam semaphore. Untuk menggunakan lock ini, method untuk write dan read harus dimodifikasi.

Read More »


Setelah mengimplementasikan Multithread di postingan sebelumnya, jadi pengen iseng-iseng nyoba salah satu problem di IPC yakni Readers and Writers. Sebelumnya di kuliah High Performance System, pernah dikasih tugas yang menyangkut IPC problem juga yakni Producer dan Consumer, tapi pakai bahasa C dan pakai  POSIX thread. Sekarang ingin coba implementasi di Java.

Permasalahan Readers and Writers ini tidak jauh berbeda dengan Dining Philosopher, hanya saja di Readers and Writers ini terdapat beberapa Readers dan Writers. Kedua jenis ini memiliki perlakuan yang berbeda. Sebuah filefile boleh diakses beberapa Reader bersamaan, tetapi ketika Writer sedang menulis tidak ada yang boleh menulis file tersebut.

Masalah ini bisa dilihat setelah kita memodifikasi method untuk write dan read pada kode di postingan sebelumnya.
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 »



Java User Group (JUG) Bandung merupakan suatu komunitas pengguna java yang ada di Bandung. Komunitas ini berisikan anggota yang ingin belajar lebih dalam lagi mengenai dunia pemrograman Java. Karena itu, JUG di tujukan untuk semua orang yang tertarik dengan Java.

Anggota JUG sementara ini masih dari regional Bandung, namun tidak menutup kemungkinan anggota dari luar kota untuk bergabung. Silahkan click untuk bergabung dengan JUG Bandung.

Affiliate Partner :

OpenSolaris User Group Bandung

Repost from here.

%d blogger menyukai ini: