解决方案 »

  1.   

    多线程必须是同时启动,并发运行的。你的循环操作只是依次启动不同的线程,不算是并发,你可以把循环和if..else去掉,那就是多线程并发了。
      

  2.   

    是的,是多线程,一共有六个线程在运行,主线程和1、2、3、4、5线程。只不过程序中for循环和if判断都是多余的,你的代码实际效果是这样:
    public static void main(String[] args) {
    new MyThread1().start();
    new MyThread2().start();
    new MyThread3().start();
    new MyThread4().start();
    new MyThread5().start();
    }
    这个是并发的,你假设1、2、3、4、5线程是需要长时间运行的,就会发现,这5个线程同时在运行。多线程不必须是同时启动的,假如有一个线程运行了一半,这是再增加一个新线程与之并行,也叫做并发。
      

  3.   

    我的那种写法都在FOR循环里 会不会出现先执行MyThread1线程  当MyThread1执行完了之后才开始执行myThread2
      

  4.   

    我的那种写法都在FOR循环里 会不会出现先执行MyThread1线程  当MyThread1执行完了之后才开始执行myThread2晕!刚开始学java吧?有些概念你还没搞清楚啊。
    1、start方法是告诉系统这个线程可以运行了,至于什么时候运行,由说了算。
    2、无论如何你的主线程以在同一时间只能运行一行代码,严格意义上说,这5条语句是顺序执行的,也不是同时执行的。所以没有严格意义上的同时启动,都是有先后的。
    3、如果线程1很短,一瞬间就完成了,那么很有可能线程1运行完了线程2才启动(但具体也不好说),如果1需要稍长一点儿的时间,2就有很可能并行,至于是否能并行,因素很多,比如硬件有几个核,操作系统调度机制,线程1是否会让度运行时间……这都因素都会影响多线程行为。
      

  5.   

    落下两字,补充:1、start方法是告诉系统这个线程可以运行了,至于什么时候运行,由“系统”说了算。
      

  6.   

    我的那种写法都在FOR循环里 会不会出现先执行MyThread1线程  当MyThread1执行完了之后才开始执行myThread2晕!刚开始学java吧?有些概念你还没搞清楚啊。
    1、start方法是告诉系统这个线程可以运行了,至于什么时候运行,由说了算。
    2、无论如何你的主线程以在同一时间只能运行一行代码,严格意义上说,这5条语句是顺序执行的,也不是同时执行的。所以没有严格意义上的同时启动,都是有先后的。
    3、如果线程1很短,一瞬间就完成了,那么很有可能线程1运行完了线程2才启动(但具体也不好说),如果1需要稍长一点儿的时间,2就有很可能并行,至于是否能并行,因素很多,比如硬件有几个核,操作系统调度机制,线程1是否会让度运行时间……这都因素都会影响多线程行为。
    恩  明白了  谢谢耐心回复