Java IO : Pipes

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.

About Reza Ervani 387 Articles
Adalah pendiri programming.rezaervani.com -

Be the first to comment

Leave a Reply

Your email address will not be published.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.