ec
01/19/2020, 4:05 PMstreetsofboston
01/19/2020, 4:18 PMSENDING 2channelchannel.send(...)runBlockingrunBlockingec
01/19/2020, 4:21 PMnewSingleThreadContextSending 2streetsofboston
01/19/2020, 4:22 PMrunBlockingec
01/19/2020, 4:23 PMnewSingleThreadContextstreetsofboston
01/19/2020, 4:24 PMstreetsofboston
01/19/2020, 4:25 PMlaunchval scope = CoroutineScope(newSingleThreadContext();  .... scope.launch { .... } .... scope.launch { ... }ec
01/19/2020, 4:25 PMnewSingleThread..ec
01/19/2020, 4:25 PMExecutors.newSingleThreadExecutor().execute {
        runBlocking {
            println("Listening")
            for (i in channel) {
                println("${Thread.currentThread()} RECEIVED $i")
            }
        }
    }newSingleThread..streetsofboston
01/19/2020, 4:25 PMrunBlockingec
01/19/2020, 4:26 PMstreetsofboston
01/19/2020, 4:27 PMrunBlockingstreetsofboston
01/19/2020, 4:27 PMrunBlocking.execute { ...  }ec
01/19/2020, 4:28 PMnewSingleThread..streetsofboston
01/19/2020, 4:29 PMrunBlockingec
01/19/2020, 4:29 PMec
01/19/2020, 4:29 PMReceiveChannel<T>streetsofboston
01/19/2020, 4:30 PMoffersendstreetsofboston
01/19/2020, 4:32 PMstreetsofboston
01/19/2020, 4:32 PMscope.launch { ... your coroutine code here ... }ec
01/19/2020, 4:36 PMReceiveChannel<T>ec
01/19/2020, 4:44 PMCoroutineScope(<http://Dispatchers.IO|Dispatchers.IO>).launch{}