当前位置: 首页 > article >正文

多线程的常用方法

getName和setName方法

注意点 setName方法最好放在线程启动之前

最好在线程启动之前修改名字,因为线程启动之后,如果执行过快的话,那么在调用 setName() 之前线程可能就已经结束了

MyThread t1 = new MyThread("haha");
t1.setName("线程1");
t1.start();
System.out.println(t1.getName());

currentThread()方法

哪个线程调用这个代码,就拿到哪个线程。 public static native Thread currentThread();

所以在这个代码例子中,是主线程在调用这个代码,那就可以拿到主线程。这个方法的返回值是线程

{
    public static void main(String[] args) {
        //currentThread()方法:哪个线程调用这个代码,就拿到哪个线程
        Thread m = Thread.currentThread();//public static native Thread currentThread();
    }
}

sleep睡眠方法

public static void sleep(long millis) {}

作用:让线程睡眠,阻塞。

参数是毫秒,1000好毫秒等于1秒

public static void main(String[] args) throws InterruptedException {
    //搞清楚Thread类的sleep方法(线程睡眠)
    for (int i = 1; i <= 10; i++) {
        System.out.println(i);
        try {
            Thread.sleep(1000); //1000毫秒=1秒
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

join方法

就是让方法插队

package com.itheima.demo2threadapi;

public class ThreadApiDemo3 {
    public static void main(String[] args) {
        //目标 掌握join(插队)方法
        MyThread2 mt = new MyThread2();
        mt.start();
        //主线程在子线程开始之前就已经执行到了i等于3,
        // 这可能是因为主线程的循环执行得非常快,而子线程的启动需要一定的时间
        for (int i = 0; i <10; i++) {
            System.out.println(i);
            if (i == 3) {
                try {
                    mt.join();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
class MyThread2 extends Thread{
    @Override
    public void run() {
        //3、在方法中编写线程的任务代码(也就是要干的活)
        for (int i = 0; i <5; i++) {
            System.out.println(Thread.currentThread().getName() +"输出:"+i);
        }
    }
}

注意点

主线程在子线程开始之前就已经执行到了i等于3,这可能是因为主线程的循环执行得非常快,而子线程的启动需要一定的时间

构造器(可以用来修改线程的名字)

1、public static native Thread currentThread();

MyThread t1 = new MyThread("haha");

class MyThread extends Thread{
    public MyThread(String n) {
        super(n);
        //super()是专门用于调用直接父类的构造方法
    }

2、public Thread(Runnable task, String name) {}

Thread t = new Thread(r, "子线程"); //public Thread(Runnable task, String name) {}

http://www.kler.cn/a/533103.html

相关文章:

  • 蓝桥杯例题七
  • CSS 样式化表格:从基础到高级技巧
  • AJAX笔记进阶篇
  • 在React中使用redux
  • 力扣73矩阵置零
  • 为AI聊天工具添加一个知识系统 之85 详细设计之26 批流一体式 与数据提取器
  • 高等代数笔记—域与一元多项式
  • 中国证券基本知识汇总
  • HTB:Administrator[WriteUP]
  • 【01-Qt-C++-android】
  • Redis --- 秒杀优化方案(阻塞队列+基于Stream流的消息队列)
  • 100.3 AI量化面试题:解释配对交易(Pairs Trading)的原理,并说明如何选择配对股票以及设计交易信号
  • 使用Java操作Redis数据类型的详解指南
  • 100.5 AI量化面试题:在使用LSTM预测股票价格时,如何有效处理金融时间序列的非平稳性?
  • c++ string类 +底层模拟实现
  • 《VSCode 与 QT:强强联合的开发利器》
  • 解决 LeetCode 922 题:按奇偶排序数组 II
  • Linux 传输层协议 UDP 和 TCP
  • FPM(Effing Package Management)安装与使用指南
  • B-树:解锁大数据存储和与快速存储的密码
  • 基于JavaWeb开发的Java+Jsp+SpringMVC漫威手办商城系统设计和实现
  • 1分钟基于腾讯云TI平台搭建DeepSeek大模型
  • 2025-2-3-sklearn学习(50) (51) 完结篇 零落成泥碾作尘,只有香如故。
  • Vite:现代前端开发的利器
  • Spring Security(maven项目) 3.0.3.0版本
  • 接口测试通用测试用例