Java从入门到放弃 · 多线程(三)

298 阅读2分钟

“这是我参与8月更文挑战的第27天,活动详情查看: 8月更文挑战

写在前言

本篇主要介绍Thread的常用方法。如果有兴趣的话,掘友们可以通过传送门来看我之前对多线程的一些浅见。(传送门1)(传送门2)

Thread常用方法

Thread常用方法:获取线程名称

每个线程都有一个标识名,多个线程可以同名。如果线程创建时没有指定标识名,就会为其生成一个新名称。

获取线程的名称有两种方法分别是:

  • 1.使用Thread类中的方法getName()

    string getName()返回该线程的名称。

  • 2.可以先获取到当前正在执行的线程,使用线程中的方法getName()获取线程的名称

    static Thread currentThread ()返回对当前正在执行的线程对象的引用。

来看一下具体例子:

直接使用getname方法

String name = getName();
System.out.println(name);

使用currentThread方法获取当前执行的线程

Thread thread = currentThread();
String name1 = thread.getName();
System.out.println(name1);

上面三条语句可以直接写成一条

链式编程

System.out.println(Thread.currentThread().getName());

Thread常用方法:设置线程名称

设置线程的名称也有两种方法:(了解)

  • 1.使用Thread类中的方法setName(名字)

    void setName(String name)改变线程名称,使之与参数name 相同。

  • 2.创建一个带参数的构造方法,参数传递钱线程的名称;调用父类的带参构造方法,把线程名称传递给父类,让父类(Thread)给子线程起一个名字

    Thread(string name)分配新的Thread 对象。

来看具体实例:

首先创建Thread类的子类,重写run方法

public class MyThread extends Thread{
    public MyThread(){}
    //带参构造方法
    public MyThread(String name){
    //调用父类带参构造方法
        super(name);
    }
    //重写run方法
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }
}

在测试类中创建对象

public class MyThreadTest {
    public static void main(String[] args) {
        MyThread mt = new MyThread();
        //直接设置线程名称
        mt.setName("小明");
        mt.start();
        //创建含参对象
        MyThread mt2 = new MyThread("小红");
        mt2.start();
    }
}

Thread常用方法:sleep

public static void sleep(Long millis):

使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行》。毫秒数结束之后,线程继续执行

我们通过一个小案例来了解sleep方法;

要求:模拟秒表:每过一秒钟打印一个数,从1打印到60.

for (int i = 1; i <= 60; i++) {
    System.out.println(i);
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

写在最后

好了,关于Thread的常用方法我们就一起学习到这里,如果感觉有帮助不妨留个赞吧!

以上内容如有不正之处,欢迎掘友们批评指正。