手机
当前位置:查字典教程网 >编程开发 >Java >java中thread线程start和run的区别
java中thread线程start和run的区别
摘要:最近看到一个题目,代码如下:复制代码代码如下:publicstaticvoidmain(Stringargs[]){Threadt=newT...

最近看到一个题目,代码如下:

复制代码 代码如下:

public static void main(String args[]) {

Thread t = new Thread() {

public void run() {

pong();

}

};

t.run();

System.out.println("ping");

}

static void pong() {

System.out.println("pong");

}

问,结果会输出什么?

我运行了很多次,结果都是pong ping。后来终于发现了关键点所在,线程对象t,调用的不是start()方法,而是run()方法。后来我开断点模式debug,发现调用run()方法,整个程序只有一个线程,而调用start()方法之后,程序就会多出一个线程。这时才有和主线程争cpu,可能出现多种结果的情况,但由于下面输出方法很快就被执行了,所以基本上都是“ping pong”的输出。

所以run()和start()的区别就是:

run()是Runnable接口中定义的一个方法,是为了让客户程序员在这个方法里写自己的功能代码的。直接调用和普通的类调用自己的成员方法是没有任何区别的。

而start()则是线程开始运行的标志,当这个方法被调用后,程序中才会多出一个独立的线程,接着便是执行run()方法。

所以我觉得,自己要写单独的线程,最好还是继承Thread来做,如果是实现接口的话,到主线程里,还是要new Thread(new YourRunnableClass())来调用,感觉很不方便。

【java中thread线程start和run的区别】相关文章:

java中sdk与jdk的区别详细解析

Java线程中sleep和wait的区别详细介绍

java中out.print和out.write的方法

基于Java多线程notify与notifyall的区别分析

java中vector与hashtable操作实例分享

java final 和instanceof 关键字的区别

java中instanceof和getClass()的区别分析

java中子类继承父类,程序运行顺序的深入分析

Java 中Comparable和Comparator区别比较

java中extends与implements的区别浅谈

精品推荐
分类导航