问答详情
源自:2-3 Java线程-隋唐演义实战开发---演员简介

用extend Thread的方法创建线程和用继承runnable接口的方法创建线程,有什么区别呢?

不是特别理解这两种创建方法之间的关联

提问者:慕码人4120781 2020-07-17 20:44

个回答

  • 欧阳文轩
    2021-06-01 20:27:49

    还有一点区别,实现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();
        }
    }


  • WE_Xing
    2020-07-26 16:33:59

    没什么区别 , Thread类本质上也是实现了Runnable接口 , 由于类单继承以及接口多继承 , 推荐用Runnable接口 , 因为可能你的类需要继承别的类 , 不管是通过继承类还是实现接口来实现多线程 , 最终都是通过Thread的对象的API来控制线程的