class Thread1 extends Therad{ public void run(){ for(int i=0;i<10;i+){ System.out.println(“子线程1-”+i); } } } class Thread2 extends Therad{ public void run(){ Thread1 thread1=new Thread1(); thread1.start(); thread1.join(); for(int i=0;i<10;i+){ System.out.println(“子线程2-”+i); } } } 主方法: Thread2 t2=new Thread2(); t2.start(); t2.join(); for(int i=0;i<10;i+){ System.out.println(“主线程-”+i); } 子线程2可能先打印出”子线程2-0”么?
时间: 2024-04-19 09:30:05 浏览: 128
测试数据如下 1)文件一:data01.txt,内容:Beijing is beautiful I love Beijing
不,子线程2不会先打印出"子线程2-0"。
在给定的代码中,主线程创建了一个Thread2对象t2,并调用t2的start()方法启动子线程2。然后,主线程调用t2的join()方法,等待子线程2完成执行。最后,主线程使用一个for循环打印出"主线程-"的输出。
在子线程2的run()方法中,首先创建了一个Thread1对象thread1,并调用其start()方法启动子线程1。然后,子线程2调用thread1的join()方法,等待子线程1完成执行。最后,使用一个for循环打印出"子线程2-"的输出。
由于join()方法会阻塞当前线程,直到被调用的线程完成执行,所以在子线程2中调用thread1.join()会使子线程2等待子线程1执行完毕。因此,子线程2中的for循环打印输出会在子线程1执行完毕之后才进行。
因此,无论是在多核处理器还是单核处理器上运行,子线程2都不会先打印出"子线程2-0",而是会等待子线程1执行完毕后再进行打印。
阅读全文