多執行緒按順序列印數字
阿新 • • 發佈:2021-08-16
多執行緒按順序列印數字:
示例結題如下:
A執行緒列印:1
B執行緒列印:2
C執行緒列印:3
A執行緒列印:4
B執行緒列印:5
C執行緒列印:6
.........
怎樣高效率實現?
package com.youzu.got.world import com.google.common.base.Stopwatch @Volatile var runNum = 0 var threadNum = 3 var maxNum = 300000 class MyThread(private val threadName: String, var curNum: Int) : Thread() { override fun run() {while (true) { if (curNum <= runNum) { println("$threadName : ${runNum + 1}") curNum += threadNum runNum++ } if (runNum > maxNum) { break } } } } fun main() { var list = arrayListOf<Thread>() for (n in 0 until threadNum) { val thread= MyThread("threadName_$n", n) list.add(thread) } var watch = Stopwatch.createStarted() list.forEach { it.start() } list.forEach { it.join() } watch.stop() println(watch) }
無鎖方式實現