title: Why do variables passed to runnable need to be final?
body: <p>If I have a variable <code>int x = 1</code>, say, and I declare a runnable in the main thread, and I want to pass x to the runnable's <code>run()</code> method, it must be declared <code>final</code>. Why?</p>
  
  <pre><code>final int x = 0;//&lt;----must be final...
  private class myRun implements Runnable {
  
      @Override
      public void run() {
          x++;//
      }
  
  }
  </code></pre>