# java创建多线程与go创建多线程的入门代码

以下是 Java 和 Go 创建多线程(Go 中称为 goroutine)的入门代码示例,两者都演示了启动多个并发任务并等待它们完成。

# Java(使用 Thread + join

public class ThreadExample {
    public static void main(String[] args) throws InterruptedException {
        // 创建两个线程
        Thread t1 = new Thread(() -> {
            for (int i = 1; i <= 3; i++) {
                System.out.println("Java 线程-1: " + i);
            }
        });

        Thread t2 = new Thread(() -> {
            for (int i = 1; i <= 3; i++) {
                System.out.println("Java 线程-2: " + i);
            }
        });

        t1.start(); // 启动线程1
        t2.start(); // 启动线程2

        t1.join();  // 等待线程1结束
        t2.join();  // 等待线程2结束

        System.out.println("所有线程执行完毕");
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# Go(使用 goroutine + sync.WaitGroup

package main

import (
    "fmt"
    "sync"
)

func main() {
    var wg sync.WaitGroup

    // 启动第一个 goroutine
    wg.Add(1)
    go func() {
        defer wg.Done()
        for i := 1; i <= 3; i++ {
            fmt.Println("Go goroutine-1:", i)
        }
    }()

    // 启动第二个 goroutine
    wg.Add(1)
    go func() {
        defer wg.Done()
        for i := 1; i <= 3; i++ {
            fmt.Println("Go goroutine-2:", i)
        }
    }()

    wg.Wait() // 等待所有 goroutine 完成
    fmt.Println("所有 goroutine 执行完毕")
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# 主要区别

特性 Java (Thread) Go (goroutine)
创建方式 实现 Runnable 或继承 Thread 使用 go 关键字 + 函数调用
栈内存起步 约 1 MB (可调) 约 2 KB (动态增长)
等待机制 join() 方法 sync.WaitGroup
并发单位 操作系统线程 (较重) 用户态协程 (极轻量)
代码简洁度 较冗长 极简洁,符合语法自然

提示:Java 也可以使用 ExecutorService 来简化线程管理,但入门示例最经典的仍是 Thread + Runnable。Go 的 goroutine 则无需复杂封装,语言原生支持。

Last Updated: 6/3/2026, 4:53:54 AM