title: What does InputStream.available() do in Java?
body: <p>What does <code>InputStream.available()</code> do in <em>Java</em>? I read the documentation, but I still cannot make it out.</p>
  
  <p>The doc says:</p>
  
  <blockquote>
    <p>Returns the number of bytes that can be read (or skipped over) from this input stream without blocking by the next caller of a method for this input stream. The next caller might be the same thread or or another thread.</p>
    
    <p>The available method for class InputStream always returns 0.</p>
  </blockquote>
  
  <p>What do they mean by <em>blocking</em>? Does it just mean a synchronized call?</p>
  
  <p>And most of all, what is the purpose of the <code>available()</code> method?</p>