С потоками есть очень много разных способов работать. Советую почитать, как это в Java делают хотя бы базово. На коленке могу приложить такой вариант:
val executor = Executors.newSingleThreadExecutor()
executor.run {
val result = /* тут души змея */
activity.runOnUiThread { показывай результат на ui }
}