多线程按顺序打印数字:
示例结题如下:
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) }
无锁方式实现
原文:https://www.cnblogs.com/tankaixiong/p/15147063.html