Das ist klassisch - wie kann man .read() lesen, wenn nichts zu lesen ist? NIO ist eindeutig leistungsintensiv und darauf ausgerichtet, nicht blockierende io zu erreichen. Versuchen Sie, nio auf Socket.read() zu tun - Sie werden immer noch entweder eine Blockierung Operation oder Durchfall bei Timeout ... keine Menge Phantasie wird dazu führen, dass Daten auf dem 'Port' erscheinen, wenn Sie einige Daten erzeugen ...
final SecureRandom dataGenerator = SecureRandom.getInstance("SHA1PRNG");
final Integer range = new Integer('z' - 'a');
for (big loop)
{
buffer.append(dataGenerator.nextInt (range.intValue() + (int) 'a'));
// ............
do.something(buffer.toString());
Jetzt bewegen sich Ihre Entwicklungsfähigkeiten, auch wenn sie sich auf einem Gletscherpace bewegen.
try {
// Create a read/writeable file channel
File file = new File("filename");
FileChannel channel = new RandomAccessFile(file, "rw").getChannel();
// Create an output stream on the channel
OutputStream os = Channels.newOutputStream(channel);
// Create an inputstream on the channel
InputStream is = Channels.newInputStream(channel);
// Close the channel
is.close();
} catch (IOException e) {
}
Nachricht bearbeiten: Ich kritische Reaktion erfassen, warten, bis Ihre zwölftausend Linien in CORBA versuchen readObjectNoData() (nützlich für die Initialisierung deserialisiert Objekte richtig trotz eines „feindlichen“ oder unvollständigen Quellenstrom) zu implementieren
Meine einmalige Pseudo-Code wurde erwartet, um eine Art von Datenstrom zu entschlüsseln, neu zu laden oder was auch immer - ich las Ihren Beitrag erneut; Ich denke, es sagt, wie man non-blocking io auf einem Objekt liest, das nicht da sein kann ... das tief in bekannte Probleme von Exception und Scheduling eindringt, wird heikel versuchen, dies mit jemandem zu tun, der die Frage in der Art stellt Du hast es formuliert, versuche es neu zu formulieren und andere erklären zu lassen, was du fragst.
Ich werde im Moment zum Taco Stand gehen.
vielleicht können Sie die available() -Methode verwenden, wenn der Stream abfragt, ob Bytes zu lesen sind. – clamp
Tippfehler: das sollte natürlich "... des Streams" lauten. – clamp