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();
相关推荐
啊森要自信7 分钟前
【QT】常⽤控件详解(六)多元素控件 QListWidget && Table Widget && Tree Widget
c语言·开发语言·c++·qt
屁股割了还要学16 分钟前
【数据结构入门】栈和队列
c语言·开发语言·数据结构·学习·算法·青少年编程
z樾29 分钟前
MATLAB核心技巧:从入门到精通
开发语言·matlab
暗流者1 小时前
信息安全简要
开发语言·网络·php
苹果醋31 小时前
React Native jpush-react-native极光推送 iOS生产环境接收不到推送
java·运维·spring boot·mysql·nginx
老华带你飞1 小时前
数码论坛|基于SprinBoot+vue的数码论坛系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·数码论坛系统
葵野寺1 小时前
【JVM】深入解析Java虚拟机
java·linux·jvm·gc·垃圾回收
程序猿七度2 小时前
【FastExcel】解决ReadSheet在Map中获取对象不准确问题(已提交PR并合并到开源社区)
java·开源·fastexcel
绕灵儿2 小时前
C++ 部署LSTM(.onnx)
开发语言·c++·lstm
AI风老师3 小时前
5、docker镜像管理命令
java·docker·eureka