以前のリビジョンの文書です
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) ・・・ androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2" // step1 }
package com.nekotype.ips.api import android.os.AsyncTask import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* // step2 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // click button.setOnClickListener { println("start: ${Thread.currentThread().name}") GlobalScope.launch{ println("coroutine: ${Thread.currentThread().name}") } println("end: ${Thread.currentThread().name}") } } } ↓ start: main end: main coroutine: DefaultDispatcher-worker-1
// thread version import kotlinx.coroutines.* import java.util.concurrent.atomic.AtomicLong import kotlin.concurrent.thread fun main() { val c = AtomicLong() for (i in 1..1_000_000L) // thread だと数秒まっても終了しないので諦めた thread(start = true) { c.addAndGet(i) } println(c.get()) } ↓ // coroutines version import kotlinx.coroutines.* import java.util.concurrent.atomic.AtomicLong import kotlin.concurrent.thread fun main() { runBlocking { val sum = deferred.sumBy { it.await() } println("Sum: $sum") } } val deferred = (1..1_000_000).map { n -> GlobalScope.async { n } } // Sum: 1784293664
import kotlinx.coroutines.* import java.util.concurrent.atomic.AtomicLong import kotlin.concurrent.thread fun main() { runBlocking { val sum = deferred.sumBy { it.await() } println("Sum: $sum") } } val deferred = (1..1_000_000).map { n -> GlobalScope.async { delay(1000) n } } ↓ Sum: 1784293664