JavaEE初阶—Thread类及常见方法—线程的操作(超详解)
在JavaEE开发中,线程的创建与管理是非常重要的一个方面。Java提供了Thread类及Runnable接口来支持多线程编程。理解Thread类的常见方法,能够帮助我们高效地进行多线程编程。本文将详细介绍Thread类及其常见操作,并提供代码示例来帮助理解。
1. Thread类介绍
在Java中,线程是程序执行的基本单位。Thread类是Java中用于创建和管理线程的主要类。可以通过继承Thread类或实现Runnable接口来定义一个线程。
2. 创建线程
- 继承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(); } } ```
- 实现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的多线程编程。