解决方案 »

  1.   

    下次把代码贴全
    首先,什么是多线程,多线程自然是有很多线程在调度执行,主线程sleep(5000),在这之前,thread0已经就绪或已执行,自然会执行MyRunnable 的run方法,如果你把thread0放在后面,那肯定是等到主线程先sleep(5000)之后才开始执行run方法
    为什么打印两次,首先主线程在sleep(5000)之后,会打印输出,如果你的run方法中有打印语句,那当然会在这之前打印了。如果thread0在主线程sleep(5000)之后执行,那么肯定是先打印main其次是thread0
      

  2.   

    你打印语句没写吧。
    thread0.start执行到这里,已经通知系统thread0可以启动了。所以你看到thread0
    而main thread睡了5秒后打印main
      

  3.   

    楼主这个多线程,有main线程和thread0线程。
    Thread.sleep(5000);主线程睡着了,要睡5秒,而此时thread0.start();子线程已经开始了,当然就先输出thread0,过五秒后再输出主线程main。
    把thread0的语句放在try catch后面,那么main还没睡醒,而thread0子线程要等main睡醒后才启动,当然是5秒后全部输出。