title: Do we need to use MappedByteBuffer.force() to flush data to disk?
body: <p>I am using MappedByteBuffer to speed up file read/write operations(). My questions as below:</p>
  
  <ol>
  <li><p>I am not sure if I need to use .force() method to flush the content to disk or not. It seems like without .force(), the .getInt() can still work perfectly (well, since this is a memory-mapped buffer, i assume .getInt() fetches the data from disk, which means the data has been flushed into disk already.</p></li>
  <li><p>Is the .force() method a blocking method? </p></li>
  <li><p>Is a blocking method a synchronized block?</p></li>
  <li><p>There is a huge performance difference with or without calling .force() method. What's the benefit of calling .force() manually? Under which situation should we use it? I assume without calling it, the data will still be written to disk behind the scene.</p></li>
  <li><p>If we needs to call .force(), will calling it from another thread helps to improve performace? Will it corrupt the data because of synchronization problem?</p>
  
  <p>import java.io.FileNotFoundException;
  import java.io.IOException;
  import java.io.RandomAccessFile;
  import java.nio.MappedByteBuffer;
  import java.nio.channels.FileChannel;
  import java.nio.channels.FileChannel.MapMode;</p></li>
  </ol>
  
  <p>public class Main {</p>
  
  <pre><code>public static void main(String[] args) throws IOException {
      System.out.println("start");
  
      RandomAccessFile raf = new RandomAccessFile("test.map", "rw");
      FileChannel fc = raf.getChannel();
      MappedByteBuffer mbb = fc.map(MapMode.READ_WRITE, 0, 2000000);
  
      int total = 0;
      long startTime = System.currentTimeMillis();
      for (int i = 0; i &lt; 2000000; i += 4) {
          mbb.putInt(i, i);
          //mbb.force();
          total += mbb.getInt(i);
      }
      long stopTime = System.currentTimeMillis();
  
      System.out.println(total);
      System.out.println(stopTime - startTime);
      System.out.println("stop");
  }
  </code></pre>
  
  <p>}</p>