title: Difference between a thread and a coroutine in Kotlin
body: <p>Is there a specific language implementation in Kotlin which differs from another language's implementation of coroutines?</p>
  <ul>
  <li>What does it mean that a coroutine is like a lightweight thread?</li>
  <li>What is the difference?</li>
  <li>Are Kotlin coroutines actually running in parallel (concurrently)?</li>
  <li>Even in a multi-core system, is there only one coroutine running at any given time?</li>
  </ul>
  <p>Here I'm starting 100,000 coroutines. What happens behind this code?</p>
  <pre><code>for(i in 0..100000){
     async(CommonPool){
      // Run long-running operations
    }
  }
  </code></pre>