就是一般的函数调用,先调用run,输出pong,然后继续向下执行,输出ping。
结果肯定是pongping。既然用了线程,就不应该用t.run();你用t.start();替换试试,结果输出就不一样了。为了看结果比较明显,可以在pong()中Thread.sleep一段时间。如果用t.run(),无论sleep多长时间,结果都是pongping,如果用t.start(),结果就很可能是pingpong。线程

解决方案 »

  1.   

    这里的定义的t是一个匿名类,从Thread继承,增加了一个run普通方法。t.run()就是简单的调用成员方法而已,没有启动线程。要用线程的话像楼上说的那样即可。
      

  2.   

    表面上看这段代码运行了一个线程,但实际上因为调用的是 run() 方法而不是 start() 方法,所以不会有两个线程运行,而是主线程依次输出 pong 和 ping。
      

  3.   

    你写的是线程,但是没有正确的启动线程,只是调用了方法而已,所以按照你的代码来说应该输出pong然后输出ping。如果启动线程的话,调用t.start(),输出的就不一定了,这要看你的cpu的心情了,有可能是pongping,也可能是pingpong