title: Kotlin coroutines `runBlocking`
body: <p>I am learning Kotlin coroutines. I've read that <code>runBlocking</code> is the way to bridge synchronous and asynchronous code. But what is the performance gain if the <code>runBlocking</code> stops the UI thread? 
  For example, I need to query a database in Android:</p>
  
  <pre><code>    val result: Int
      get() = runBlocking { queryDatabase().await() }
  
  private fun queryDatabase(): Deferred&lt;Int&gt; {
      return async {
          var cursor: Cursor? = null
          var queryResult: Int = 0
          val sqlQuery = "SELECT COUNT(ID) FROM TABLE..."
          try {
              cursor = getHelper().readableDatabase.query(sqlQuery)
              cursor?.moveToFirst()
              queryResult = cursor?.getInt(0) ?: 0
          } catch (e: Exception) {
              Log.e(TAG, e.localizedMessage)
          } finally {
              cursor?.close()
          }
          return@async queryResult
      }
  }
  </code></pre>
  
  <p>Querying the database would stop the main thread, so it seems that it would take the same amount of time as synchronous code? Please correct me if I am missing something.</p>