老师,俺觉得第二点并不是两者的区别,Thread程序是new了三个MyThread,而只启动了一个线程,Runnable则是new了一个MyThread启动了三个线程,也就是说前者一个线程运行着三个不同的对象,后者则是同一个对象给三个线程,是代码的实现方式不一样而不是Thread和Runnable的区别。 一点拙见,若有问题还望指正
继承thread类和实现runnable接口本身就没有什么可比性。两者根部就不是同一类东西一个是接口,另一个是继承类且这个thread类也是继承了Runnable接口的。两者不同在于方法的实现不同,我也可以在继承thread类里写runnable的方法。再有就是java单继承的劣势,这点上Runnable会更好些。
同意萤火虫的,两件事物的可比性,肯定是除了要比较的方面,其他方面都一样才能有可比性,这视频,在两个主函数立面,两个对象的实例化的方法都不一样,咋比较?如果我把extends thread 换成implements Runnable,其他代码部分都一样,这两段代码执行效果完全一样啊。那这两个东西的区别到底在哪里啊?!
呃,前者不是一个线程三个对象,是三个Thread对象,也是三个线程,这三个线程启动后都会执行5次卖票,实现不了共享“5张票”这个资源,所以输出就会有15张票卖出去,显然不符合实际,用Runnable就可以解决这个问题,创建的三个线程可以共享“5张票”这个资源,建议再看一遍课程,老师讲的蛮清楚的(个人意见,仅供参考,欢迎指正)