多线程

QUESTION 13: Exhibit: 01. public class Thread1 { 02. int x = 0; 03. public class Runner implements Runnable { 04. public void run() { 05. int current = 0; 06. for (int i = 0; i < 4; i++) { 07. current = x; 08. System.out.print(current + ", "); 09. x = current + 2; 10. } 11. } 12. } 13. 14. public static void main(String[] args) { 15. new Thread1().go(); 16. } 17. 18. public void go() { 19. Runnable r1 = new Runner(); 20. new Thread(r1).start(); 21. new Thread(r1).start(); 22. } 23. } Which two are possible results? (choose two) A. 0,2,4,4,6,8,10,6, B. 0,2,4,6,8,10,2,4, C. 0,2,4,6,8,10,12,14, D. 0,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14, E. 0,2,4,6,8,10,12,14,0,2,4,6,8,10,12,14, Answer: A,C 涉及知识点: 线程 解析: 一个for循环只循环4次,两个线程只能输出8个数字,D,E不正确; 一个线程不可能输出两个相同的数,如果出现两个相同的数,这两个数就是线程的切换点; A选项正确,线程1输出“0,2,4,”后,线程2开始执行,输出“4,6,8,10,”,然后线程1继续执行,输出“6,”; B选项不正确,线程1输出“0,”后,线程2开始执行,输出“2,4,6,8,10,”,然后线程1继续执行,输出“2,4,”,一个线程最多输出4个数,而线程2输出了5个,因此不可能出现这种情况; C选项正确,线程切换都发生在x = current + 2;之后,没有重复数字。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值