创建线程的两种方式的主要区别
实现Runnable接口,和继承Thread类的具体区别?
------解决方案--------------------如果你用心的话,可以看到 Thread 也是 Runnable 的实现之一!
------解决方案--------------------1:线程不是由开发人员创建的,Java 并没有提供创建线程的方法!
2:Runnable 的实现类只是线程执行的任务,并不是线程本身。
------解决方案--------------------一般情况下提倡实现Runnable,因为可以多实现,但是不能多继承,如果你继承了
Thread那么就不能继承别的类了。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------同意3、4楼~Java单继承(撇开Object),如果你的实现线程功能的类还需要继承其他类,那么它不可能同时继承两个类,最好的办法就是使用Runnable接口~
------解决方案--------------------一个类实现了runnable接口
例如 class A implements runnable;
那么你调用 Thread TA = new Thread(A).start();
Thread TB = new Thread(A).start();
Thread TC = new Thread(A).start();
TA,TB,TC都是调用的A类的run()函数; 而run()函数可以操纵类A的成员变量。相当于三个线程共用资源。
如果单纯的继承Thread类,再运行。则各个线程没法通过上边的方法共享资源。
------解决方案--------------------Runnable是接口,如果一个类继承了Thread类的话,就不能继承其它类,如果实现Runnable接口的话,还可以实现其它接口
------解决方案--------------------
------解决方案--------------------区别,这存在区别么?你有本事实现Runnable而不使用Thread启动一个线程试试?
------解决方案--------------------线程 是用来驱动任务的 。 所以其实 把Thread 命名为 Task 更好。无论我们实现Runnable 还是 继承Run
其实都是实现的一个可以用线程驱动的任务