不是特别理解这两种创建方法之间的关联
还有一点区别,实现Runnable结构去创建线程类时,可以方便的实现多线程处理类内共享变量。例如:
class MyThread1 implements Runnable{ private int ticketsCont = 5; //共享变量 @Override public void run() { while(ticketsCont > 0) { ticketsCont--; System.out.println(Thread.currentThread().getName() + "买了一张票,剩余票数: " + ticketsCont); } } } public class TicketsRunnable { public static void main(String[] args) { MyThread1 myThread1 = new MyThread1(); Thread t1 = new Thread(myThread1, "A"); Thread t2 = new Thread(myThread1, "B"); Thread t3 = new Thread(myThread1, "C"); t1.start(); t2.start(); t3.start(); } }
没什么区别 , Thread类本质上也是实现了Runnable接口 , 由于类单继承以及接口多继承 , 推荐用Runnable接口 , 因为可能你的类需要继承别的类 , 不管是通过继承类还是实现接口来实现多线程 , 最终都是通过Thread的对象的API来控制线程的