Java NIO vs IO

Come sappiamo, java NIO è stato introdotto per il progresso dell'API java IO convenzionale. I principali miglioramenti che rendono NIO più efficiente di IO sono il modello di flusso di dati del canale utilizzato in NIO e l'uso del sistema operativo per le attività IO convenzionali.

La differenza tra Java NIO e Java IO può essere spiegata come segue:

  • Come accennato nel post precedente nel buffer NIO e nel flusso di dati orientato al canale per le operazioni di I / O che forniscono un'esecuzione più rapida e prestazioni migliori rispetto all'IO. Anche NIO utilizza il sistema operativo per le attività di I / O convenzionali, il che lo rende ancora più efficiente.

  • Un altro aspetto della differenza tra NIO e IO è che questo IO utilizza il flusso di dati della linea di flusso, ovvero un byte in più alla volta e si basa sulla conversione degli oggetti di dati in byte e viceversa, mentre NIO si occupa dei blocchi di dati che sono blocchi di byte.

  • In java IO stream gli oggetti sono unidirezionali mentre in NIO i canali sono bidirezionali, il che significa che un canale può essere utilizzato sia per leggere che per scrivere dati.

  • Lo snellimento del flusso di dati in IO non consente di spostarsi avanti e indietro nei dati.Se il caso è necessario spostarsi avanti e indietro nei dati letti da un flusso, è necessario prima memorizzarli nella cache in un buffer.Mentre in caso di NIO usiamo il buffer oriented che consente di accedere ai dati avanti e indietro senza bisogno di cache.

  • L'API NIO supporta anche il multithreading in modo che i dati possano essere letti e scritti in modo asincrono in modo tale che durante l'esecuzione delle operazioni di I / O il thread corrente non venga bloccato, rendendolo ancora una volta più efficiente dell'API java IO convenzionale.

  • Il concetto di multi threading viene introdotto con l'introduzione di Selectors in java NIO che consentono di ascoltare più canali per eventi IO in modo asincrono o non bloccante.

  • Il multi threading in NIO lo rende Non bloccante, il che significa che al thread viene richiesto di leggere o scrivere solo quando i dati sono disponibili, altrimenti il ​​thread può essere utilizzato in altre attività per il tempo medio.Ma questo non è possibile in caso di java IO convenzionale come nessun multi threading è supportato in esso che lo rende come Blocco.

  • NIO consente di gestire più canali utilizzando un solo thread, ma il costo è che l'analisi dei dati potrebbe essere un po 'più complicata rispetto alla lettura dei dati da un flusso di blocco in caso di java IO, quindi nel caso in cui siano necessarie meno connessioni con larghezza di banda molto elevata con l'invio di molti dati alla volta, che in questo caso Java IO API potrebbe essere la soluzione migliore.