java extends与implements在使用时的一个差异2013-11-01 16:44by沧海一滴,…阅读,…评论,,编辑
java extends与implements在使用时的一个差异:
Implements:
public class ThreadImplementsTest implements Runnable{public void loop(){String name=Thread.currentThread().getName();System.out.println(name+"====>进入loop()");for (int i = 0; i < 10; i++) {try {Thread.sleep(200);} catch (InterruptedException e) {// TODO Auto-generated catch blockSystem.out.println(e);}}System.out.println(name+"=============>离开Loop");}main(String[] args) {// TODO Auto-generated method stubThreadSleepTest tst=new ThreadSleepTest();tst.run();try {Thread.sleep(100);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}tst.loop();}public void run() {// TODO Auto-generated method stubloop();}}Output:
main====>进入loop()main=============>离开Loopmain====>进入loop()main=============>离开Loop
可以看出直接在ThreadImplementsTest 中调用run方法是没有多线程的,原因是实现Runnable接口的类,只是说明具备了多线程的能力,要在多线程下运行,需要给一个环境(机会):
可使用以下两种方法来调用:
import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class ThreadImplTest {main(String[] args) {// TODO Auto-generated method stubThreadImplementsTest tit=new ThreadImplementsTest();ExecutorService es=Executors.newCachedThreadPool();es.execute(tit);tit.loop();}}Output://new Thread(tit).start();
main====>进入loop()Thread-0====>进入loop()00112233445566778899Thread-0=============>离开Loopmain=============>离开Loop
//ExecutorService es=Executors.newCachedThreadPool(); //es.execute(tit);
pool-1-thread-1====>进入loop()main====>进入loop()00112233445566778899pool-1-thread-1=============>离开Loopmain=============>离开Loop
Extends:public class ThreadExtendsTest extends Thread {public void loop(){String name=Thread.currentThread().getName();System.out.println(name+"====>进入loop()");for (int i = 0; i < 10; i++) {try {Thread.sleep(200);} catch (InterruptedException e) {// TODO Auto-generated catch blockSystem.out.println(e);}}System.out.println(name+"=============>离开Loop");}public void run() {// TODO Auto-generated method stubloop();}main(String[] args) {// TODO Auto-generated method stubThreadExtendsTest tet=new ThreadExtendsTest();tet.setName("Test Thread");tet.start();try {Thread.sleep(100);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}tet.loop();}}Output:
Test Thread====>进入loop()main====>进入loop()Test Thread=============>离开Loopmain=============>离开Loop
,一个人,一条路,人在途中,心随景动,从起点,