go并发编程系列二:线程的并发执行

发布时间 2023-09-02 15:27:31作者: jamstack

新建concurrent文件夹,在该文件夹下创建concurrent.go,代码如下:

package concurrent

import (
    "fmt"
    "time"
)

func ThreadZhangSan() {
    for i := 1; i <= 3; i++ {
        fmt.Println("张三:", i)
        time.Sleep(time.Millisecond * 500)
    }
}

func ThreadLiSi() {
    for i := 1; i <= 3; i++ {
        fmt.Println("李四:", i)
        time.Sleep(time.Millisecond * 500)
    }
}

func ThreadWangWu()  {
    for i := 1; i <= 3; i++ {
        fmt.Println("王五*:", i)
        time.Sleep(time.Millisecond * 500)
    }
}

 

在main.go里,运行这三个线程:
go concurrent.ThreadZhangSan()
go concurrent.ThreadLiSi()
go concurrent.ThreadWangWu()

 

我们可以多次执行,看这三个线程打印的内容,发现是无序的,这就是go程的并发了,在其他编程语言中,提到并发,好像很神秘,但是在go语言里线程的并发要简洁很多!

我们定义了三个线程,为了更好的理解,我们可以模拟一个场景:假设你是一个班级的班主任,在你的班级里有三个学生,线程的并发就是你管理学生的方式,现状是这三个学生很调皮,作为班主任你一定想把班级管理好,那么,就认真看这个系列的并发教程吧!