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();
相关推荐
ocean21033 小时前
2025-2026年C++专题大厂面试高频问题
开发语言·c++·面试
Java内核笔记3 小时前
Spring Boot 4 SSRF 防护源码剖析:InetAddressFilter 挡住内网地址与云元数据
java·后端
白远山3 小时前
健身场馆无人自动化系统实战指南:从架构设计到部署全流程解析
java·开发语言·架构·需求分析
user_admin_god3 小时前
第 09 篇:实践一 —— 文本摘要(Map-Reduce 分块)
java·人工智能·spring boot·语言模型
咖啡八杯3 小时前
Controller 基类封装:BaseController 的模板方法设计
java·架构·设计
vx_BS813303 小时前
【项目编号:project49759】Spring Boot 宠物综合服务平台:商城、预约、咨询、活动与健康档案的一体化实现
java·spring boot·eclipse·tomcat·intellij-idea
她的男孩3 小时前
加了 @Idempotent 还是重复扣款了 3 笔:扒完 1279 行幂等 Starter,我挖出 5 个隐蔽的坑
java·后端·架构
步行cgn3 小时前
Spring 注入内部 Bean 详解
java·spring·rpc
郝学胜-神的一滴3 小时前
C++20模板元编程 02:吃透模板基础核心四大核心知识点
开发语言·数据结构·c++·程序人生·软件工程·visual studio
troy1283 小时前
Visual Studio Code 详细教程:从入门到高效开发
开发语言·python