Java实现多线程:Thread类与Runnable接口

需积分: 1 0 下载量 168 浏览量 更新于2024-08-05 收藏 1KB MD 举报
本文档介绍了在Java中实现多线程的两种基本方法,即继承Thread类和实现Runnable接口。 在Java编程中,多线程是并发执行多个任务的能力,这对于提高程序的效率和响应性至关重要。Java提供了两种主要的方式来创建和管理线程: 1. 继承Thread类 - extends Thread 当一个类继承自Thread类时,它本身就成为一个线程类。你需要重写`run()`方法,在其中定义线程执行的任务。然后,通过调用`start()`方法来启动线程。下面是一个示例: ```java public class TestThread extends Thread { @Override public void run() { for (int i = 0; i < 20; i++) { System.out.println("我在学习多线程" + i); } } public static void main(String[] args) { TestThread tt = new TestThread(); tt.start(); for (int i = 0; i < 100; i++) { System.out.println("我在摸鱼" + i); } } } ``` 在这个例子中,`TestThread`类扩展了`Thread`类并实现了`run()`方法。在`main`方法中,创建了一个`TestThread`实例并启动,同时主线程(`main`方法所在的线程)也在执行。 2. 实现Runnable接口 - implements Runnable 另一种方式是创建一个实现Runnable接口的类,并在`run()`方法中定义线程任务。然后,将Runnable对象作为参数传递给Thread类的构造函数,创建一个新线程。启动线程依然通过调用`start()`方法。以下是一个示例: ```java public class TestRunnable implements Runnable { @Override public void run() { for (int i = 0; i < 20; i++) { System.out.println("我在学习多线程" + i); } } public static void main(String[] args) { TestRunnable tr = new TestRunnable(); new Thread(tr).start(); for (int i = 0; i < 100; i++) { System.out.println("我在摸鱼" + i); } } } ``` 在这个例子中,`TestRunnable`类实现了Runnable接口,而不是直接继承Thread。这允许你避免了Java的单继承限制,因为一个类可以实现多个接口。 无论是继承Thread还是实现Runnable,`start()`方法都会调用`run()`方法来执行线程任务。但是,`start()`方法不同于直接调用`run()`,前者会创建一个新的线程并在新的上下文中运行,而后者则是在当前线程中执行。 多线程编程中还需要关注线程安全、同步控制、死锁等问题。例如,当多个线程访问共享资源时,可能会出现数据不一致的情况,这时可以使用`synchronized`关键字来实现线程同步,确保同一时间只有一个线程可以执行特定代码块。此外,`wait()`、`notify()`和`notifyAll()`方法可以用于线程间的通信和协作。 理解和熟练掌握Java中的多线程技术对于编写高效、响应迅速的程序至关重要。