Java编程--多线程(继承Thread类和实现Runnable接口)
一. 通过继承Thread类
//线程操作主类 class MyThread extends Thread { private String name; public MyThread(String name) { this.name = name; } @Override public void run() { for (int x = 0; x < 20; x++) { System.out.println(this.name + "-->" + x); } } } // 主类 public class ThreadTest1 { public static void main(String[] args) { MyThread mt1 = new MyThread("Thread1"); MyThread mt2 = new MyThread("Thread2"); MyThread mt3 = new MyThread("Thread3"); //多线程启动的唯一方法就是Thread类中的start()方法 mt1.start(); mt2.start(); mt3.start(); } }
运行结果:此时每一个线程对象交替执行。
抛出:
IllegalThreadStateException - 如果线程已经启动。
二. 通过实现Runnable接口
Java的单继承限制。
public Thread(Runnable target):分配新的 Thread 对象。
//线程操作主类 class MyThread implements Runnable { private String name; public MyThread(String name) { this.name = name; } @Override public void run() { for (int x = 0; x < 20; x++) { System.out.println(this.name + "-->" + x); } } } // 主类 public class ThreadTest1 { public static void main(String[] args) { MyThread mt1 = new MyThread("Thread1"); MyThread mt2 = new MyThread("Thread2"); MyThread mt3 = new MyThread("Thread3"); new Thread(mt1).start(); new Thread(mt2).start(); new Thread(mt3).start(); } }
面试题:请解释Thread类与Runnable接口实现多线程的区别?(请解释多线程两种方式的区别?)
(1)Thread类是Runnable接口的子类,使用Runnable接口实现多线程可以避免单继承局限;
(2)Runnable接口实现的多线程可以比Thread类实现的多线程更加清楚的描述数据共享的概念。
面试题:请写出多线程两种实现操作。
把Thread类继承的方式和Runnable接口实现的方式代码都写出来。