是的,是多线程,一共有六个线程在运行,主线程和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个线程同时在运行。多线程不必须是同时启动的,假如有一个线程运行了一半,这是再增加一个新线程与之并行,也叫做并发。
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个线程同时在运行。多线程不必须是同时启动的,假如有一个线程运行了一半,这是再增加一个新线程与之并行,也叫做并发。
1、start方法是告诉系统这个线程可以运行了,至于什么时候运行,由说了算。
2、无论如何你的主线程以在同一时间只能运行一行代码,严格意义上说,这5条语句是顺序执行的,也不是同时执行的。所以没有严格意义上的同时启动,都是有先后的。
3、如果线程1很短,一瞬间就完成了,那么很有可能线程1运行完了线程2才启动(但具体也不好说),如果1需要稍长一点儿的时间,2就有很可能并行,至于是否能并行,因素很多,比如硬件有几个核,操作系统调度机制,线程1是否会让度运行时间……这都因素都会影响多线程行为。
1、start方法是告诉系统这个线程可以运行了,至于什么时候运行,由说了算。
2、无论如何你的主线程以在同一时间只能运行一行代码,严格意义上说,这5条语句是顺序执行的,也不是同时执行的。所以没有严格意义上的同时启动,都是有先后的。
3、如果线程1很短,一瞬间就完成了,那么很有可能线程1运行完了线程2才启动(但具体也不好说),如果1需要稍长一点儿的时间,2就有很可能并行,至于是否能并行,因素很多,比如硬件有几个核,操作系统调度机制,线程1是否会让度运行时间……这都因素都会影响多线程行为。
恩 明白了 谢谢耐心回复