title: How exactly do asynchronous/synchronous operations works
body: <p>Lets say we have a method <code>HarryIsLarry()</code>:</p>
  <pre><code>public void HarryIsLarry() { 
  write(&quot;Hello&quot;);
  System.out.println(&quot;Write operation complete&quot;);
  }
  </code></pre>
  <p>Now lets assume that this method is part of an networking framework where write() will send a string to a remote node. Lets assume that write() is an synchronous (IO) operation. Would this mean that the thread executing the task will stop, meaning that System.out.println() will not be executed until write() will be completed?</p>
  <p>And next lets assume that our method is part of an asynchronous (NIO) framework thus in this new scenario write would be non-blocking. Would this mean that System.out.println() would be executed even if write() has not completed? Could it even be that the method has returned but the write operation has not yet completed?</p>