title: How do processor cores share/run queued threads?
body: <p>I have a processor with two cores c1 and c2. I have seven threads t0, t1, t2, t3, t4, t5 and t6. t0 is the main thread.</p>
  <p>From t0 I create t1 and t2 to handle certain tasks from data d0 obtained from t0. Both t1 and t2 work to produce data d0a and d0b they then feed to the main thread to produce d0a + d0b = data d1 (i.e. threads t1 and t2 wait (<code>join()</code>) for each other to be idle before sharing their intel (d0a and d0b obtained from d0) with the main thread to produce d1).</p>
  <p>In order to help speed up the process at t1 it spawns thread t3 and t4 to help produce d0a likewise the process at t2 also spawns t5 and t6 to help produce d0b.</p>
  <p>Let’s assume c1 handles t1, t3 and t4 then c2 handles t2, t5 and t6 by default</p>
  <p>Say t1 with the assistance of t3 and t4 after producing d0a finished way ahead of the commencement of the process at t2. Would c1 help c2 finish up the process at t2 for example by handling one of it’s sub threads (t5 or t6).</p>
  <p>Can processor cores start queued threads whenever threads assigned to them are idle.</p>
  <p>This question is particularly tagged with java and windows because I am especially interested in how it applies. Other answers are also welcome</p>