Java IO : Concurrent IO

Oleh : Reza Ervani

بسم الله الرحمن الرحيم

Terkadang kita mungkin perlu untuk memproses input dan ouput secara bersamaa. Dengan kata lain, kita mungkin perlu memiliki lebih dari satu thread pemrosesan input dan produksi output. Sebagai contoh, kita mungkin memiliki aplikasi yang perlu memrposes suatu jumlah besar file di disk. Ini dapat dilakukan secara paralel dengan tetap memperhatikan performa. Atau mungkin kita memiliki suatu server, seperti sebuah web server atau chat server, yang mnerima banyak koneksi dan request individual. Ini juga dapat diproses secara paralel dengan beberapa pencapaian performa sebagai hasilnya.

Jika kita memerlukan concurrent IO, berikut beberapa masalah umum yang harus kita perhatikan :

Kita sebaiknya tidak memiliki lebih dari satu thread pembacaan dari suatu InputStream atau Reader pada waktu yang sama. Sebaiknya tidak pula memiliki lebih dari satu threan penulis ke suatu OutputStream atau Writer pada waktu yang sama. Jika tidak, kita tidak memiliki cara untuk menjamin berapat banyak input yang akan dibaca tiap thread, atau dalam urutan seperti apa thread menulis data ke stream output.

Kita mungkin dapat memiliki lebih dari satu thread penggunaan suatu stream, reader atau writer jika mereka menggunakannya secara berurutan. Sebagai contoh, kita dapat memiliki satu thread yang menentukan dari tipe input apa request dilakukan, kemudian menyerahkannya ke thread yang cocok untuk pemrosesan lebih jauh. Hal ini dimungkinkan karena akses ke stream/reader/writer dibuat berurutan. Catat, bahwa kode yang menangani stream antar thread sebaiknya disinkronisasi dengan tepat.

Catatan : Dalam Java NIO, kita dapat memiliki suatu thread tunggal pembacaan dari/penulisan ke lebih dari “kanal” yang ada. Sebagai contoh, jika kita memiliki banyak koneksi jaringan yang terbuka, tetapi data pada tiap koneksi jarang, misalnya pada suatu server chat, kita dapat memiliki sebuah thread tunggu untuk memonitor seluruh kanal (koneksi). Java NIO adalah bahasan yang berbeda dan akan dibahas pada bagian tutorial yang berbeda pula.

About Reza Ervani 426 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.