这段代码的执行结果不懂,有木有小伙伴帮忙看看啊!

jsshizhanab 2014-06-04 10:54:04
public class test123 {

public static void main(String args[]) {

Thread t = new Thread() {

public void run() {
pong();
}
};

t.run();
System.out.print("ping");

}

static void pong() {

System.out.print("pong");

}
}
...全文
202 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
levelnini 2014-06-05
  • 打赏
  • 举报
回复
你写的是线程,但是没有正确的启动线程,只是调用了方法而已,所以按照你的代码来说应该输出pong然后输出ping。如果启动线程的话,调用t.start(),输出的就不一定了,这要看你的cpu的心情了,有可能是pongping,也可能是pingpong
remember1989 2014-06-05
  • 打赏
  • 举报
回复
表面上看这段代码运行了一个线程,但实际上因为调用的是 run() 方法而不是 start() 方法,所以不会有两个线程运行,而是主线程依次输出 pong 和 ping。
依然赛 2014-06-04
  • 打赏
  • 举报
回复
这里的定义的t是一个匿名类,从Thread继承,增加了一个run普通方法。t.run()就是简单的调用成员方法而已,没有启动线程。要用线程的话像楼上说的那样即可。
「已注销」 2014-06-04
  • 打赏
  • 举报
回复
就是一般的函数调用,先调用run,输出pong,然后继续向下执行,输出ping。 结果肯定是pongping。 既然用了线程,就不应该用t.run();你用t.start();替换试试,结果输出就不一样了。为了看结果比较明显,可以在pong()中Thread.sleep一段时间。如果用t.run(),无论sleep多长时间,结果都是pongping,如果用t.start(),结果就很可能是pingpong。 线程。。。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧