//使用runnable接口实现多线程的优点
//使用继承Thread类的方式来开发多线程应用在设计上是有局限的,
// 因为java是单继承,不支持多继承,所以为了改变这种限制.
// 可以使用实现Runnable接口的方式来实现多线程
public class TestDemo {
public void a_save_method(){
System.out.println("a中的保存数据方法被执行");
}
}
// java中不支持多继承
//class Bserver1 extends TestDemo,Thread{
// public void b_save_method(){
// System.out.println("a中的保存数据方法被执行");
// }
//}
//所以 就有使用runnable接口的必要性了
class Bserver2 extends TestDemo implements Runnable{
public void b_save_method(){
System.out.println("a中的保存数据方法被执行");
}
@Override
public void run() {
b_save_method();
}
}
//程序不在出现异常,通过实现runnable 接口 可以实现“多继承”的效果
//另外需要说明的是Thread 也继承了runnable接口,
//这就意味着构造函数Thread(Runnable target)不仅可以传入Runnable接口的对象,
//还可以传入一个Thread类的对象,这样完全可以将一个Thread对象中的run方法交给其他线程去调用
//代码如下:
class MyThread3 extends Thread{
@Override
public void run() {
System.out.println("mythread3");
}
}
class Test{
public static void main(String[] args) {
MyThread3 myThread3 =new MyThread3();
// Mythread3 是 Thread的子类
// Thread 是Runnable的子类
// 所以MyThread也相当于Runnable的实现类
Thread t=new Thread();
t.start();
}
}
//在非多继承的情况下,使用继承Thread类和实现Runnable接口这两种方式在取得程序运行结果时没有太大的区别
//但一旦出现多继承的情况下 建议采用实现Runnable接口的方式来处理多线程的问题
//另外 使用Runnable 接口方式实现多线程可以把“线程”和”任务“分离,Thread代表线程,而Runnable代表可运行的任务
//Runnable里面包含Thread 线程要执行的代码,这样处理可以实现多个Thread公用一个Runnable