Java NIO ve IO
Java NIO'nun geleneksel java IO API'nin geliştirilmesi için tanıtıldığını bildiğimiz gibi NIO'yu IO'dan daha verimli kılan ana iyileştirmeler, NIO'da kullanılan kanal veri akışı modeli ve geleneksel IO görevleri için işletim sisteminin kullanılmasıdır.
Java NIO ve Java IO arasındaki fark şu şekilde açıklanabilir -
NIO tamponunda ve IO ile karşılaştırıldığında daha hızlı yürütme ve daha iyi performans sağlayan I / O işlemleri için kanal odaklı veri akışında önceki gönderide bahsedildiği gibi NIO, geleneksel I / O görevleri için işletim sistemini kullanarak yine daha verimli hale getiriyor.
NIO ve IO arasındaki farkın diğer bir yönü, bu IO'nun akış hattı veri akışını kullanması, yani her seferinde bir bayt daha kullanması ve veri nesnelerinin bayta dönüştürülmesine ve bunun tersine NIO, bayt parçaları olan veri bloklarıyla ilgilenmesidir.
Java'da IO akış nesneleri tek yönlüdür, NIO kanallarında ise çift yönlüdür, yani bir kanal veri okumak ve yazmak için kullanılabilir.
IO'daki düzene veri akışı, verilerde ileri ve geri hareket etmeye izin vermez. Bir akıştan okunan verilerde ileri ve geri hareket etmek gerekirse, önce onu bir tamponda önbelleğe almamız gerekir.NIO durumunda ise, arabellek odaklı kullanırız Önbelleğe almaya gerek kalmadan verilere ileri ve geri erişim sağlar.
NIO API ayrıca çoklu iş parçacığını destekler, böylece veriler, IO işlemlerini gerçekleştirirken mevcut iş parçacığının engellenmemesi gibi eşzamansız olarak okunabilir ve yazılabilir. Bu da onu geleneksel java IO API'den daha verimli hale getirir.
Çoklu iş parçacığı kavramı tanıtıldı Selectors Java NIO'da, eşzamansız veya engellemesiz bir şekilde IO olayları için birden fazla kanalı dinlemeye izin verir.
NIO'da çoklu iş parçacığı, engellenmemesini sağlar; bu, iş parçacığının yalnızca veri mevcut olduğunda okunması veya yazılması istendiği anlamına gelir, aksi takdirde iş parçacığı diğer görevlerde ortalama süre boyunca kullanılabilir. Engelleme olarak yapan içinde desteklenir.
NIO, yalnızca tek bir iş parçacığı kullanarak birden fazla kanalın yönetilmesine izin verir, ancak bunun maliyeti, verilerin ayrıştırılması, java IO durumunda bir engelleme akışından veri okunmaya göre biraz daha karmaşık olabilir. bir seferde çok fazla veri göndererek, bu durumda java IO API en uygun seçenek olabilir.