Thread 类的基本用法

简介: 比较推荐:使用 lambda 表达式创建线程的时候不用重写 run 方法。不需要显式重写run方法的原因是因为线程的目标方法已经在Lambda表达式中定义了。Lambda表达式是一种用于创建匿名函数的语法糖,它可以将一个方法(或一段代码块)包装为一个函数对象。当您使用Lambda表达式创建线程时,Lambda表达式的内容会被视为线程执行的任务,这个任务会自动成为run方法的实现。

目标:


1. 线程创建


2. 线程中断


3. 线程等待


4. 线程休眠


5. 获取线程实例


线程创建

1. 继承 Thread 类

创建一个 Thread 类的子类,并重写 run 方法,然后通过实例化的子类对象来调用 start() 方法启动线程。

class MyThread extends Thread {
    public void run() {
        // 线程执行的代码
    }
}
MyThread thread = new MyThread();
thread.start();


2. 实现 Runnable 接口

创建一个类并实现 Runnable 接口,然后重写 run 方法,然后将实现Runnable 接口的对象传递给 Thread 类的构造函数。

class MyRunnable implements Runnable {
    public void run() {
        // 线程执行的代码
    }
}
Thread thread = new Thread(new MyRunnable());
thread.start();

3.  lambda 表达式

比较推荐:使用 lambda 表达式创建线程的时候不用重写 run 方法。


不需要显式重写run方法的原因是因为线程的目标方法已经在Lambda表达式中定义了。Lambda表达式是一种用于创建匿名函数的语法糖,它可以将一个方法(或一段代码块)包装为一个函数对象。当您使用Lambda表达式创建线程时,Lambda表达式的内容会被视为线程执行的任务,这个任务会自动成为run方法的实现。


Thread t = new Thread(() -> {
    //线程执行的代码
});
t.start();

线程中断

使用 interrupt() 方法中断线程的执行。被中断的线程需要检查自身的中断状态(下篇博客会介绍),并在必要时终止线程的执行。


Thread myThread = new Thread(() -> {
    while (!Thread.currentThread().isInterrupted()) {
        // 线程执行的代码
    }
});
// 中断线程
myThread.interrupt();

线程等待

使用 wait() 和 notify() / notifyAll() 方法来实现线程的等待和通知机制。


wait() :让线程等待,直到其他线程调用对象的 "notify() / notifyAll() " 方法来唤醒它


notify() :唤醒等待在相同对象上的一个随机线程


notifyAll() :唤醒等待在相同对象上的所有线程


线程休眠

使用Thread.sleep() 方法使线程进入休眠状态,暂停执行一段指定的时间。

try {
    Thread.sleep(1000); // 休眠1秒
} catch (InterruptedException e) {
    // 处理中断异常
}

获取线程实例

使用 Thread.currentThread() 方法来获取当前正在执行的线程的实例。

Thread currentThread = Thread.currentThread();


目录
相关文章
|
4月前
|
算法 Java 调度
深入理解 Thread 类的 Yield 方法
【8月更文挑战第22天】
179 4
|
4月前
|
Java
Thread 类中的start() 和 run() 方法有什么区别
【8月更文挑战第9天】Thread 类中的start() 和 run() 方法有什么区别
291 0
|
7月前
|
Java Linux API
Java多线程基础-4:详解Thread类及其基本用法 (一)
Java 中的 `Thread` 类是用来管理线程的,每个线程都是通过 `Thread` 类的对象来描述。
315 0
|
7月前
|
Java API 调度
【Java多线程】Thread类的基本用法
【Java多线程】Thread类的基本用法
54 0
Thread 类中的 start () 和 run () 方法的区别
Thread 类中的 start () 和 run () 方法的区别
69 0
|
Java 调度
【多线程】Thread类的基本用法
【多线程】Thread类的基本用法
【多线程】Thread类的基本用法
|
Java 调度
Thread类的方法
Thread类的方法
44 0
|
调度
Thread 类的基本方法
Thread 类的基本方法
90 0
|
程序员 调度
多线程之Thread 类的基本用法
多线程之Thread 类的基本用法