先是main方法执行,for循环执行
建网站原本是网站策划师、网络程序员、网页设计师等,应用各种网络程序开发技术和网页设计技术配合操作的协同工作。成都创新互联公司专业提供成都网站设计、网站建设,网页设计,网站制作(企业站、成都响应式网站建设公司、电商门户网站)等服务,从网站深度策划、搜索引擎友好度优化到用户体验的提升,我们力求做到极致!
然后第0-4次循环的时候,if语句中代码均不执行,值执行最后一句,故连着打印5次当前线程名+i
所以有
main0
main1
main2
main3
main4
输出。
然后if(i==5)
建立新线程并启动之,并在随后立即调用join方法,使该线程立刻抢到执行时间,此时主线程被挂起,故执行run方法中代码,所以输出
半路杀出线程50
半路杀出线程51
半路杀出线程52
半路杀出线程53
半路杀出线程54
该线程执行完毕,CPU时间继续交给原来的主线程,继续main方法中join后的语句,再完成5次循环,输出
main5
main6
main7
main8
main9
答案是C,在第六行以后。
解释如下:
o=null;是把第二行创建的对象设置为null了,但是它的引用还在oa[0]被引用,所以只有当把oa[0]=null销毁以后,o才彻底没有被引用的地方,这时候gc就会把它回收掉。
代码如下:
import java.util.Scanner;
public class App {
public static void main(String[] argv) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
for (int i = 0; i n; i++) {
int m = Math.abs((n / 2) - i);
for (int k = 0; k m; k++)
System.out.print(' ');
m = n - Math.abs((n / 2) - i) * 2;
for (int j = 0; j m; j++) {
System.out.print('*');
}
System.out.println();
}
}
}
运行结果: