title: Do I need to synchronize methods inside the run method in java when calling start method?
body: <p>Can anyone tell me if I'm right or not? I have two thread which will run in parallel.</p>
  
  <pre><code>class MyThread extends Thread {
  
      MyThread() {
      }
  
      method1() {
      }
  
      method2() {
      }
  
      method3() {
      }
  
      approach(1):
  
          run() {
              method1();
              method2();
              method3();
          }
  
      approach(2):
  
          run() {
              //the code of method1 is here (no method calling)
              //the code of method2 is here (no method calling)
              //the code of method3 is here (no method calling)
          }
  
  }
  
  class Test{
      public static void main(){
          Thread t1 = new Thread();
          t1.start();
          Thread t2 = new Thread();
          t2.start();
      }
  }
  </code></pre>
  
  <p><code>method1</code>, <code>method2</code> and <code>method3</code> don't access global shared data but their codes perform some write in local variable within the method section, thus I guess I can not allow overlap execution within the method section. </p>
  
  <p>Thereby:
  in <code>approach(1)</code>: I need to make the methods (<code>method1</code>, <code>method2</code> and <code>method3</code>) synchronized, right?</p>
  
  <p>in <code>approach(2)</code>: No need to synchronize the code sections, right?</p>
  
  <p>If I'm right in both approach, using the <code>approach(2)</code> will give better performance, right?</p>