【Duke】协程机制 021 - PingPongGooo/GoFoundation GitHub Wiki

Tread vs. Groutine

1. 创建时默认的stack大小
JDK5 以后 Java Thread stack 默认为1M
Grountine 的 stack 初始化大小为2k

2. 和KSE(Kernel Space Entity)的对应关系
Java Thread 是 1:1     系统线程由CPU直接调度,调度效率非常的高。但是会潜在一个问题。线程切换,会发生内核线程的切换。是一个非常大的消耗
Groutine是M:N        多个线程或者多个协程,都在一个系统线程里,和一个系统内核对应。 切换的消耗非常少。

package groutine

import (
	"fmt"
	"testing"
	"time"
)

func TestGroutine(t *testing.T)  {
	for i:=0; i< 10; i++ {
		go func(i int) { // 报 打印数字的 函数 放到协程中 执行
			fmt.Println(i)
		}(i)
	}
	time.Sleep(time.Millisecond *50)
}

go的协程简单易用。