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的单继承限制。
publicThread(Runnabletarget):分配新的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接口实现的方式代码都写出来。