为什么最后两行没有运行

面试题为什么最后两行没有运行
liu asked 4 months ago

public class AutomicDemo {
public static int k=0;
static AtomicInteger i = new AtomicInteger(0);

public static void main(String[] args){

for (int m = 0; m<10;m++){
Thread t = new Thread(new Runnable() {
@Override
public void run() {
for (int p=0;p<4000;p++) {
System.out.println("i:"+ i.get());
i.getAndIncrement();
System.out.println("k: "+k);
k++;
}
}
});
t.start();
}
System.out.println("最终i: --------------"+i);
System.out.println("最终k: --------------"+k);
}
}

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 为什么最后两行没有运行

FavoriteLoading添加本文到我的收藏
2 Answers
lhbaccount Staff answered 4 months ago

看来只有我一个人傻傻的把代码贴到eclipse里分析
不是没执行,是缓冲区有限,后面打印的把前面的冲掉了
把循环次数从4000改为4,或者命令行执行 java AtomicDemo >> /tmp/result  然后看result中的内容就知道了

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Answer for 为什么最后两行没有运行

FavoriteLoading添加本文到我的收藏
yuioplzc Staff answered 4 months ago

main线程先于子线程结束了。最后两句前面应该调用所有子线程的join()

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Answer for 为什么最后两行没有运行

FavoriteLoading添加本文到我的收藏

return top