Jaka jest różnica między I / O opartymi na kanałach a I / O opartymi na strumieniu w Javie?

21

Jaka jest różnica między wejściem strumieniowym a wejściem kanałowym? Interfejs API java zapewnia zarówno strumień w pakiecie „java.io”, jak i kanał w pakiecie „java.nio”. Który z nich ma lepszą wydajność i skraca czas działania?

Pranit Bauva
źródło
sprawdziłeś wiki tagu „nio” na Stack Overflow? „NIO oznacza„ Nowe we / wy ”. Zostało wprowadzone w JDK 1.4 w pakiecie java.nio. Zawiera kilka elementów: ...”
gnat
1
to dobre pytanie, 10 lat temu ... krótka odpowiedź jest taka , że jest mnóstwo obszernej dokumentacji na temat tego, kiedy korzystać z której technologii, obie wciąż istnieją, ponieważ są lepsze w różnych rzeczach. Długa odpowiedź Google ma wszystko, co musisz wiedzieć.
Myślę, że jest to dobre pytanie wstępne. OP jest jednym z dzisiejszych szczęśliwych 10.000 .
Gary Rowe
Według stackoverflow.com/questions/2810156/concepts-channel-vs-stream - kanał jest zorientowany na wiadomości, podczas gdy strumień jest zorientowany na bajty i prawdopodobnie nie wie, jak podzielić wiadomości. Kolejna różnica polega na tym, że kanały przechowują wiadomości, podczas gdy strumienie nie.
inf3rno,

Odpowiedzi:

13

Zobacz ten Oracle blogu za dobry przegląd

Nie zapomnij też czytać o interfejsach API NIO.2 Java 7!

Pod względem wydajności itp. Odpowiedź brzmi: „to zależy”. Zależy to od właściwości twojego I / O, np. Jego rozmiaru, jego „kształtu”, czy to sieci, dysku, pamięci czy ...

Martijn Verburg
źródło
8
Oto link do archiwum: web.archive.org/web/20140528182031/https : //blogs.oracle.com/slc/... - Dlatego odpowiedzi tutaj powinny być w stanie pracować bez ich linków btw
piegames