
Thread类是相当于实现Runnable接口的类 的代理
Thread对象调用start()方法后,其实最终是去调用Runnable接口的run()方法,这是因为 Thread也实现了Runnable接口。用Thread代理Runnable接口实现类去做一些除了run()之外的其他事情,而这件事情就是start()方法。所以不管是通过继承Thread类实现多线程还是通过实现Runnable接口来实现多线程 都要用Thread 的start()方法。并且重写Runnable接口的run()具体内容。
所以才有:用start方法来启动线程,真正实现了多线程运行
代理对象要实现和真实对象一样的接口,这样才能帮助目标对象进行代理。
如上图一样,一开始要创建目标对象:TestThread3 testThread3 = new TestThread3();
然后要将目标对象放入代理中:Thread thread = new Thread(testThread3);
代理调用start()方法启动线程: thread.start();
这里是因为代理 Thread也实现了Runnable接口,不仅可以用run()这个方法(即线程真正要执行的内容),然后它(Thread) 自己还搞了个start()方法 来启动线程。 所以说 不管是implement接口来实现多线程还是Extend Thread类 来实现多线程 都要写run()方法,并且都要通过thread.start()来启动。
今天看了下那个Thread和Runnable的底层 ,发现了一些有趣的事情 ,反反复复说了好多遍 哈哈哈。