title: C2 CompilerThread in java
body: <p>I run jstack on a java process (oracle jdk1.7_072) and found these lines</p>
  
  <pre><code>"C2 CompilerThread1" daemon prio=10 tid=0x00007f1a8415d000 nid=0x7d72 waiting on condition [0x0000000000000000]
     java.lang.Thread.State: RUNNABLE
  
  "C2 CompilerThread0" daemon prio=10 tid=0x00007f1a8415a000 nid=0x7d71 waiting on condition [0x0000000000000000]
     java.lang.Thread.State: RUNNABLE
  </code></pre>
  
  <p>I know that C2 is a bytecode compiler. I have three questions:</p>
  
  <ol>
  <li>Why there are exact 2 compiler threads? Can it be more or less? If so, when? Does the compilation run in parallel?</li>
  <li>What does <code>nid</code> parameter mean? The first one <code>nid=0x7d72</code> looks similar to java version, is it coincidence or not?</li>
  <li>Why condition address is absolute zero?</li>
  </ol>