2016-03-22 7 views
0

Ich frage mich derzeit, wie teuer es ist, eine BufferedReader-Instanz read() aufzurufen, um zu wissen, ob Daten zu lesen sind.Wie teuer ist BufferedReader.read()? Wie lange zu schlafen, zwischendurch?

In meinem Fall wickelt der BufferReader eine Socket-Verbindung.

Ich habe momentan einen Schlaf von 100 ms, weil ich es nicht ständig ausführen möchte. Aber um ehrlich zu sein, bin ich mir nicht sicher, was eine vernünftige Zeit wäre zu warten oder sollte ich überhaupt warten?

+1

'read()' wird blockiert, wenn keine Daten vorhanden sind. Du brauchst nicht zu schlafen. –

+0

Oops Ich fragte nach der falschen Methode :( – keiki

+2

Wenn Sie nach 'available()' oder 'ready()' fragen, brauchen Sie das auch nicht. Blockieren Sie einfach in 'read()'. – EJP

Antwort

2

Es blockiert. Du brauchst überhaupt nicht zu schlafen.

'Zu wissen, ob Daten zu lesen sind' macht keinen Sinn. Du kannst es nicht dafür benutzen. Sie brauchen es nicht dafür zu benutzen. Einfach blockieren. Wenn Sie über available() oder ready() sprechen, ist die Antwort ähnlich. Du brauchst es nicht, und du musst nicht darum herumschlafen. Einfach blockieren in read().

+0

inb4 "bbbb.aber Website X sagte, dass das Blockieren schlecht ist, außerdem 'non-blocking' klingt einfach besser" –