线程的2种实现方式

xiaoxiao2021-02-28  163

1.继承Thread类 声明一个内部(外部)类,假如名字叫做 Thread1,继承Thread类,重写(Override)其中的run方法。 定义一个类,里面再定义一个Thread1类型的对象,调用start()方法。 举个例子吧: public class ThreadTest1 { public static void main(String[] args){     Thread1 t1 = new Thread1();     t1.start();    } } class Thread1 extends Thread{     @Override        public void run(){         for(int i=0;i<100;i++){             System.out.println("Thread 111111-------"+i);         }     } } 2.实现Runnable接口 声明一个内部(外部)类,假如名字叫做MyThread,实现Runnable接口,实现其中的run方法。 定义一个类,里面定义一个Thread类型的对象,把MyThread的对象当作参数传递进去,调用start方法。 public class ThreadTest2 { public static void main(String[] args){     MyThread mt = new MyThread();     Thread t2 = new Thread(mt);      //上面2行可以写成 Thread t2 = new Thread(new MyThread());     t2.start();   } } class MyThread implements Runnable{     @Override        public void run(){         for(int i=0;i<100;i++){             System.out.println("Thread 22222-------"+i);         }     } } 3.比较一下两种方法吧 从我自己的理解来看,实现Runnable接口的代码更健壮。 原因很简单,java是单继承的,从长远假设来看,也许这个类改天想干点其它的事情,必须再继承某个类,因为你已经继承了Thread类,你就不能再继承了。 接口之所以灵活就在于,你可以实现多个接口,而且实现接口了还可以继续继承一个类,所以呢,给程序员带来更大的灵活性。
转载请注明原文地址: https://www.6miu.com/read-21206.html

最新回复(0)