facebook twitter hatena line email

Android/kotlin/別スレッド

提供: 初心者エンジニアの簡易メモ
2020年4月21日 (火) 19:58時点におけるAdmin (トーク | 投稿記録)による版 (別スレッド)

移動: 案内検索

別スレッド

Thread(object : Runnable {
    override fun run() {
          // スレッド処理
    }
}).start()

別スレッドで非同期処理

以下非同期処理される

Thread(object : Runnable {
    override fun run() {
        HogeService().execute()
    }
}).start()
Thread(object : Runnable {
    override fun run() {
        HogeService().execute()
    }
}).start()
internal class HogeService {
    @Synchronized
    fun execute(): Boolean {
        Log.i(TAG, "処理開始")
        Thread.sleep(5000)
        Log.i(TAG, "処理終了")
        return true
    }
    private val TAG = "HogeService"
}

Task処理(HogeTaskService)だと同期処理された。

Thread(object : Runnable {
    override fun run() {
        HogeTaskService().execute()
    }
}).start()
Thread(object : Runnable {
    override fun run() {
        HogeTaskService().execute()
    }
}).start()


internal class HogeTaskService : AsyncTask<Void, Void, Boolean>() {
    @Synchronized
    override fun doInBackground(vararg params: Void?): Boolean {
        Log.i(TAG, "処理開始")
        //Thread.sleep(5000)
        Log.i(TAG, "処理終了")
        return true
    }
    override fun onPostExecute(result: Boolean) {
    }
    companion object {
        private val TAG = "HogeService"
    }
}