C'è un API di lettura file non bloccante in java? In caso contrario, sarebbe saggio crearne uno in C++ e chiamarlo da un'app java tramite JNI?Letture file non bloccanti
risposta
No, FileChannel
non si estende SelectableChannel
.
Probabilmente perché non tutti i sistemi operativi lo supportano.
Windows fa, e in teoria è possibile scrivere una libreria C++ specifica per Windows e chiamarla tramite JNI, ma è molto lavoro da integrare con java.nio
.
Preferirei che un thread di lavoro copi il contenuto del file su un pipe e faccia letture non bloccanti sull'altra estremità della pipe.
La mia risposta originale è ora sbagliata, dal momento che l'aggiunta di AsynchronousFileChannel
in Java 7.
non è ancora possibile select su un file, ma ora ci sono due metodi di leggere il file asincrona: uno che prende un callback e another che restituisce un Future
.
Potrebbe essere più pulito utilizzare il metodo di richiamata (e inviare un evento dal callback) piuttosto che disporre di un thread dedicato che esegue il polling di una pipe.
Tuttavia, l'asincrono non è lo stesso del blocco. In effetti operazioni di I/O asincrone [usano un pool di thread obbligatorio] (https://docs.oracle.com/javase/7/docs/api/java/nio/channels/AsynchronousChannelGroup.html) dove l'IO non bloccante ovviamente non lo fa t. – RecursiveExceptionException
- 1. Play Framework: caricamenti di file - bloccanti o non bloccanti?
- 2. Perché dovrei usare socket non bloccanti o bloccanti?
- 3. Obsession con script non bloccanti
- 4. Celery + Eventlet + richieste non bloccanti
- 5. Rails: richieste HTTP non bloccanti?
- 6. Come scrivere su un file usando IO non bloccanti?
- 7. Come creare metodi non bloccanti in Scala?
- 8. Come posso ottenere socket non bloccanti connect()?
- 9. Blocchi di blocco contro blocchi non bloccanti
- 10. Esecuzione di richieste non bloccanti? - Django
- 11. recvfrom() errore 10035 utilizzando socket non bloccanti
- 12. SwapBuffers non bloccanti() con VSync = on
- 13. jQuery chiamate ajax sincroni non bloccanti
- 14. Informazioni su NodeJS e non bloccanti IO
- 15. È possibile eseguire pubub Redis non bloccanti?
- 16. Scrittura di applicazioni PHP non bloccanti
- 17. Lettura due iteratori bloccanti
- 18. Perché le letture non sono dichiarate covarianti?
- 19. Letture dei sottoprocessi Python()?
- 20. Letture sporche in Postgres
- 21. AsyncHttpClient può eseguire chiamate HTTP asincrone e non bloccanti?
- 22. Come eseguire query MySQL asincrone/non bloccanti in Play framework?
- 23. select(), recv() e EWOULDBLOCK su socket non bloccanti
- 24. Zoccoli non bloccanti: i messaggi sono in coda?
- 25. Come gestire OpenSSL SSL_ERROR_WANT_READ/WANT_WRITE su socket non bloccanti
- 26. Lo scala offre IO asincroni non bloccanti quando si lavora con i file?
- 27. Come memorizzare nella cache le letture?
- 28. Valore costante in Scala Play Letture JSON
- 29. sincronizzazione delle letture in una raccolta java
- 30. Come evitare le letture fantasma su Postgres?
Per cosa si desidera utilizzarlo? – Elalfer
File IO all'interno di un MDB. – TheWolf
Cosa c'è di sbagliato nell'usare un modello di blocco? –