求教各位高手:在多线程中,线程对象能否不运行start方法,而直接运行run方法?
我发现编译和运行都可以通过,当然没有start方法的话,多个线程之间不能切换。
我想弄清楚的是,start方法和run方法到底用了什么机制,保障多个线程能正常切换??
查了帮助文档和Thread、Runnable的源代码,还是百思不得其解!
提前谢谢各位的回复!

解决方案 »

  1.   

    直接调用run方法他不会新建一个线程来执行run方法中的代码,
    而使用start启动方法会新建一个线程来执行run方法中的代码。start方法中会调用操作系统的线程管理调度机制来切换CPU时间给不同的线程。
    个人意见。
      

  2.   

    直接调用run方法,和调用普通函数没有什么分别.
      

  3.   

    当然不行。
    如果你直接运行run方法,实际上这个方法仍然运行在当前线程;
    如果你调用start方法,实际上系统会创建一个新线程,在新线程中自动调用run方法;
      

  4.   

    start是native方法,没有原码看的.
      

  5.   

    楼上,什么叫“native方法”?愿闻其详
      

  6.   

    native方法是其他语言写的,java里只是调用而已