Java Thread 类和 Runnable 接口详解
概述
Java 中的线程是并发编程的核心内容,可以同时执行多个任务。Java 提供了两种线程的方式:继承Thread类和实现Runnable接口。
Thread 类
Thread类是Java中的一个顶级类,使用它可以快速地创建并发程序。Java 程序中的 main() 方法也是一个线程,使用Thread类的实例对象就可以创建新的线程。
Runnable 接口
Runnable 接口在 Java 中的作用是为其它类提供一个可执行的任务,这个任务可以被线程执行。实现 Runnable 接口可以使用相同的代码作为 Java 程序的线程执行主体,但此时我们将使用 Runnable 的实例对象作为 callable 对象。
使用 Thread 类创建线程
使用 Thread 类创建线程非常简单,只需要继承 Thread 类并覆盖其中的 run() 方法,即可创建一个新的线程。重写 run() 方法的代码将在新的线程中执行。下面的示例展示如何使用 Thread 类创建线程:
public class MyThread extends Thread {
@Override
public void run() {
System.out.println("Hello World!");
}
}
public class Main {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
}
}
运行上述代码将会在控制台输出"Hello World!"。
使用 Runnable 接口创建线程
使用 Runnable 接口创建线程需要实现 run() 方法,并将这个实现代码放在 main() 方法中以供线程执行。下面的示例展示如何使用 Runnable 接口创建线程:
public class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("Hello World!");
}
}
public class Main {
public static void main(String[] args) {
MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start();
}
}
运行上述代码将会在控制台输出"Hello World!"。
线程方法
Java Thread 类提供了许多有用的方法来控制线程的行为,其中一些方法包括:
- start():启动线程。
- join():等待线程结束。
- wait():暂停当前线程。
- notify():唤醒暂停的线程。
有关这些方法的更多详细信息,请参见Java文档。
范例
下面是一个更具体的示例,它演示了如何使用 Thread 类和 Runnable 接口创建并发程序:
public class PrintLetters implements Runnable {
private final int count;
private final char letter;
public PrintLetters(int count, char letter) {
this.count = count;
this.letter = letter;
}
@Override
public void run() {
for (int i = 0; i < count; i++) {
System.out.print(letter + " ");
}
}
public static void main(String[] args) {
Thread thread1 = new Thread(new PrintLetters(10, 'A'));
Thread thread2 = new Thread(new PrintLetters(10, 'B'));
thread1.start();
thread2.start();
}
}
运行上述代码将会在控制台输出"A A A A A A A A A A B B B B B B B B B B"。
总结
Java 提供了两种创建线程的方式,继承 Thread 类并覆盖其中的 run() 方法或实现 Runnable 接口并在 run() 方法中提供可执行的任务。Thread 类和 Runnable 接口都有其各自的优点和缺点。
如果一个类除了使用一个线程来执行它的任务外没有其它的目的,那么使用 Thread 类是很合适的。Runnable 接口更通用,因为它允许类实现一个接口,同时可以扩展另一个类,这是 Java 中的易用性至上的哲学的一个示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Thread 类和Runnable 接口详解 - Python技术站