Oleh : Reza Ervani
بسم الله الرحمن الرحيم
Pipes pada Java IO menyediakan kemampuan untuk dua threads yang berjalan pada JVM yang sama untuk saling berkomunikasi. Sebagaimana pula pipes adalah suatu sumber atau tujuan data yang umum.
Konsep pipe di Java karenanya sedikit berbeda dengan konsep pipe di UNIX/LINUX, dimana dua proses yang sedang berjalan pada space alamat yang bereda dapat berkomunikasi lewat suatu pipa. Di Java, pihak-pihak yang berkomunikasi mestilah berjalan pada proses yang sama (virtual mesin yang sama) dan harus di thread yang berbeda.
Membuat Pipe via Java IO
Membuat suatu pipe menggunakan Java IO dilakukan via class PipedOutputStream
dan PipedInputStream
. APipedInputStream
seharusnya dikoneksikan ke suatu PipedOutputStream
. Data ditulis ke PipedOutputStream
oleh satu thread, sehingga dapat dibaca dari PipedInputStream
yang terkoneksi oleh thread yang lain.
Contoh Pipe menggunakan Java IO
Berikut contoh sederhana bagaimana mengkoneksikan suatu PipedInputStream
ke suatu PipedOutputStream
:
PipedOutputStream output = new PipedOutputStream(); PipedInputStream input = new PipedInputStream(output);
Kita juga dapat mengkonekasikan dua stream pipe menggunakan metode connect()
yang mereka miliki. Baik PipedInputStream
maupun PipedOutputStream
memiliki metode connect()
yang dapat terhubung satu dengan yang lain.
Pipes dan Threads
Perlu diingat, ketika menggunakan dua stream pipe, lewatkan satu stream ke satu thread, dan stream yang lain ke thread yang berbeda. Panggilan read()
dan write()
pada stream terblokir, yang berarti jika kita mencoba menggunakan thread yang sama untuk membaca dan menulis, maka dapat menghasilkan terkuncinya thread itu sendiri.
Leave a Reply