1.继承Thread类的,我们相当于拿出四件事即四个卖票100张的任务分别分给四个窗口,他们各做各的事各卖各的票各完成各的任务,因为Ticket继承Thread类,所以在new Ticket()的时候在创建四个对象的同时创建了四个线程;
2.实现Runnable的, 相当于是拿出一个卖票100张得任务给四个窗口去共同完成,new Ticket()相当于那一个任务,然后实例化四个Thread,去完成这一个任务。
总之,一个是多个线程分别完成自己的任务,一个是多个线程共同完成一个任务。
大多数情况下,如果只想重写 run() 方法,而不重写其他 Thread 方法,那么应使用 Runnable 接口。这很重要,因为除非程序员打算修改或增强类的基本行为,否则不应为该类(Thread)创建子类。 |