JavaEE初阶—Thread类及常见方法—线程的操作(超详解)

在JavaEE开发中,线程的创建与管理是非常重要的一个方面。Java提供了Thread类及Runnable接口来支持多线程编程。理解Thread类的常见方法,能够帮助我们高效地进行多线程编程。本文将详细介绍Thread类及其常见操作,并提供代码示例来帮助理解。

1. Thread类介绍

在Java中,线程是程序执行的基本单位。Thread类是Java中用于创建和管理线程的主要类。可以通过继承Thread类或实现Runnable接口来定义一个线程。

2. 创建线程

  1. 继承Thread类

通过继承Thread类来定义一个线程,重写run()方法。

```java class MyThread extends Thread { @Override public void run() { System.out.println(Thread.currentThread().getName() + "线程正在执行"); } }

public class ThreadDemo { public static void main(String[] args) { MyThread thread1 = new MyThread(); MyThread thread2 = new MyThread(); thread1.start(); thread2.start(); } } ```

  1. 实现Runnable接口

另一种方式是实现Runnable接口,具有更好的灵活性和功能扩展性。

```java class MyRunnable implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getName() + "线程正在执行"); } }

public class RunnableDemo { public static void main(String[] args) { Thread thread1 = new Thread(new MyRunnable()); Thread thread2 = new Thread(new MyRunnable()); thread1.start(); thread2.start(); } } ```

3. 常见方法

(1)start()

用于启动线程。调用start()方法会导致线程进入就绪状态,等待CPU分配时间片。

(2)run()

定义线程执行的代码逻辑。虽然可以直接调用run()方法,但这并不会新起一个线程。

(3)sleep(long millis)

使当前线程睡眠指定的时间,单位为毫秒。可以用来控制线程的执行速度。

public class SleepDemo {
    public static void main(String[] args) throws InterruptedException {
        for (int i = 0; i < 5; i++) {
            System.out.println("线程执行中: " + i);
            Thread.sleep(1000); // 睡眠1秒
        }
    }
}

(4)join()

等待线程完成。调用join()方法后,调用此方法的线程将等待被调用的线程执行完毕。

class JoinDemo extends Thread {
    public void run() {
        System.out.println(Thread.currentThread().getName() + "线程开始执行");
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName() + "线程执行完毕");
    }

    public static void main(String[] args) throws InterruptedException {
        JoinDemo thread1 = new JoinDemo();
        thread1.start();
        thread1.join(); // 等待thread1执行完毕
        System.out.println("主线程继续执行");
    }
}

(5)interrupt()

中断线程。设置线程的中断状态为true,线程可以通过isInterrupted()或Thread.interrupted()来检测自己的中断状态。

class InterruptDemo extends Thread {
    public void run() {
        while (!isInterrupted()) {
            System.out.println(Thread.currentThread().getName() + "线程运行中");
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                System.out.println(Thread.currentThread().getName() + "线程被中断");
                return; // 结束线程
            }
        }
    }

    public static void main(String[] args) throws InterruptedException {
        InterruptDemo thread = new InterruptDemo();
        thread.start();
        Thread.sleep(2000);
        thread.interrupt(); // 中断线程
    }
}

4. 总结

通过学习Thread类的基本用法和常见方法,我们能够更好地管理多线程的执行,掌握线程的创建、启动及常见控制,包括超时时间、等待和中断等操作。在JavaEE开发中,合理使用线程,可以提升程序的性能和响应速度,特别是在处理高并发任务时。本篇文章旨在为初学者提供一个全面的线程操作指南,帮助大家理解并掌握Java的多线程编程。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部