Java多线程-API

常见API一览

java 复制代码
Thread t1 = new Thread(() -> {
    System.out.println("我是线程t1");
    System.out.println("Hello, World!");
});
t1.start();
// 获取线程名称 getName()
// 线程名称默认是Thread-0, Thread-1, ...
System.out.println(t1.getName());

// 通过构造方法设置线程名称 Thread(Runnable target, String name)
// 也可以通过setName()方法设置线程名称
Thread t2 = new Thread(() -> {
    System.out.println("我是线程t2");
    System.out.println("Hello, World!");
}, "t2");
t2.start();
System.out.println(t2.getName());

// 获取当前线程名称
// Thread.currentThread()获取当前线程对象
// 主线程不是人为创建,一般都是使用这种方法进行创建的
System.out.println("我是主线程:"+Thread.currentThread().getName());

join方法决定执行顺序

  • 线程一旦开启,不同先线程之间的执行顺序具有随机性
  • join方法能够决定线程执行的先后顺序
    即使t1执行了很长时间,t2也必须在t1执行完毕之后才能执行
java 复制代码
Thread t1 =  new Thread() {
    @Override
    public void run() {
        try {
            sleep(10000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        System.out.println("我是线程t1");
    }
};
t1.start();
t1.join();

Thread t2 = new Thread() {
    @Override
    public void run() {
        System.out.println("我是线程t2");
    }
};
t2.start();
t2.join();
相关推荐
froginwe119 分钟前
Rust 文件与 IO
开发语言
liulilittle11 分钟前
LIBTCPIP 技术探秘(tun2sys-socket)
开发语言·网络·c++·信息与通信·通信·tun
yyy(十一月限定版)11 分钟前
c++(3)类和对象(中)
java·开发语言·c++
落羽凉笙14 分钟前
Python基础(4)| 玩转循环结构:for、while与嵌套循环全解析(附源码)
android·开发语言·python
ytttr87317 分钟前
MATLAB的流体动力学与热传导模拟仿真实现
开发语言·matlab
山上三树19 分钟前
详细介绍 C 语言中的 #define 宏定义
c语言·开发语言·算法
IT 行者25 分钟前
Spring Security 7 OAuth2 Token 格式选择浅析
java·后端·spring
测试游记28 分钟前
基于 FastGPT 的 LangChain.js + RAG 系统实现
开发语言·前端·javascript·langchain·ecmascript
shughui28 分钟前
最新版IntelliJ IDEA下载+安装+汉化(详细图文)
java·ide·intellij-idea