java extends与implements在使用时的一个差异

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

       

,一个人,一条路,人在途中,心随景动,从起点,

java extends与implements在使用时的一个差异

相关文章:

你感兴趣的文章:

标签云: