1. 程式人生 > 其它 >多執行緒按順序列印數字

多執行緒按順序列印數字

多執行緒按順序列印數字:

示例結題如下:

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) }

無鎖方式實現