title: Is there any performance gain from using final modifier on non-primitive static data?
body: <p>Is there any performance gain from using final modifier on non-primitive static data in Java?</p>
  
  <p>For example:</p>
  
  <pre><code>static final Thread t2 = new Thread(new Thread_2());
  </code></pre>
  
  <p>versus:</p>
  
  <pre><code>static Thread t2 = new Thread(new Thread_2());
  </code></pre>
  
  <p>I mean, static final for primitives defines a true constant and is good to be used, in the sense that it's value is known at compile time, but could the use of final trigger any optimizations in this non-primitive case?</p>
  
  <p>Does using final in this case does something or it's a waste?</p>
  
  <p>Not style-wise/good practice answers please, but performance-wise only.</p>