通过继承Thread类实现多线程
继承Thread类实现多线程的步骤:
1. 在Java中负责实现线程功能的类是java.lang.Thread 类。
2. 可以通过创建 Thread的实例来创建新的线程。
3. 每个线程都是通过某个特定的Thread对象所对应的方法run( )来完成其操作的,方法run( )称为线程体。
4. 通过调用Thread类的start()方法来启动一个线程。
通过继承Thread类实现多线程:
public class TestThread extends Thread {//自定义类继承Thread类 //run()方法里是线程体 public void run() { for (int i = 0; i < 10; i++) { System.out.println(this.getName() + ":" + i);//getName()方法是返回线程名称 } } public static void main(String[] args) { TestThread thread1 = new TestThread();//创建线程对象 thread1.start();//启动线程 TestThread thread2 = new TestThread(); thread2.start(); } }
执行结果如图11-3所示:
此种方式的缺点:如果我们的类已经继承了一个类(如小程序必须继承自 Applet 类),则无法再继承 Thread 类。
通过Runnable接口实现多线程:
在开发中,我们应用更多的是通过Runnable接口实现多线程。这种方式克服了11.2.1节中实现线程类的缺点,即在实现Runnable接口的同时还可以继承某个类。所以实现Runnable接口的方式要通用一些。
通过Runnable接口实现多线程:
public class TestThread2 implements Runnable {//自定义类实现Runnable接口; //run()方法里是线程体; public void run() { for (int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName() + ":" + i); } } public static void main(String[] args) { //创建线程对象,把实现了Runnable接口的对象作为参数传入; Thread thread1 = new Thread(new TestThread2()); thread1.start();//启动线程; Thread thread2 = new Thread(new TestThread2()); thread2.start(); } }
运行效果: