首页 > 试题广场 >

执行以下程序,最终输出可能是:

[单选题]
执行以下程序,最终输出可能是

*代表空格
  • 010 2123012 3434
  • 01201 340124 2334
  • 0012314 01223344**
  • 12345 12345 12345
每个线程输出0,1,2,3,4,’空格, 输出空格前必有线程输出了0-4,所以选C、
发表于 2017-08-15 16:30:06 回复(40)
虽然每次结果不同,但是第一个空格之前必然有 0 1 2 3 4 这四个数字,这是因为第一个空格出现,意味着第一个线程执行完毕,必然会打印这四个数字。又因为线程并发执行,所以后面两个线程个别数字可能会提前打印,这就导致了答案有很多。
编辑于 2017-08-18 10:03:58 回复(12)
为什么都选择用空格来做这道题目呢?三个线程是并发执行的,所以三个线程各自的执行顺序必须是01234就是正确的,很容易得出是C答案
发表于 2019-10-22 14:52:16 回复(6)
Juc头像 Juc
线程间是异步的,也就是随机调用的;而线程内部是同步的,也就是顺序执行的。
发表于 2018-09-25 01:14:55 回复(1)
C最后两个**是空格的意思。。这个把人给弄蒙了
发表于 2018-11-12 12:23:39 回复(5)
C选项中的另外两个空格在最后...
发表于 2017-12-20 14:37:56 回复(1)
有4才会有空格  空格之前没4 的全错
发表于 2018-06-21 08:58:42 回复(1)

三个线程,三个空格,只有C输出了三个空格,其他都是俩哈哈哈

发表于 2019-03-27 09:33:35 回复(0)
这题可以主要看空格,空格出现之前,必有0-4,这样解题就容易多了。
编辑于 2022-03-31 19:47:25 回复(0)
线程内顺序执行,那么如果出现空格,必定说明有一个线程完整执行了for循环。 我的解题思路稍微麻烦了,核心思想还是:线程内有序,线程间交叉。就是首先轻松排除d,将abc三个选项写在纸上,开始找01234这种顺序,如果能找出三条符合这个顺序的即正确,通过验算,前两条中不能找出三条顺序的01234,c可以。
发表于 2018-02-07 21:59:55 回复(2)
这样理解最简单,每个线程都要走完循环,都会打印01234,一共打印三遍,顺序不确定,0到4都有三个的只能又一个选项
发表于 2022-07-08 12:59:22 回复(0)
创建了3个线程,每个线程各自打印了0 1 2 3 4,不管线程如何交替执行,结果肯定是3个0,3个1,3个2,3个3,3个4,排除后只有C符合。
发表于 2022-03-10 17:43:56 回复(0)
只有C有三个空格
发表于 2019-02-06 10:28:34 回复(0)
被星号干扰了
发表于 2022-04-30 17:04:37 回复(0)
我想问一下  D选项的5是哪来的
发表于 2022-01-03 14:19:22 回复(1)
程序执行完毕,必须输出三个空格,只有C对,并且,各个线程的都是异步执行的,但每个线程都是按照01234的顺序进行输出,不可能出现4在3前面输出。
发表于 2021-09-05 20:32:01 回复(0)
C 后面2个星星我一看到瞬间就排除了啊,哪来的 * 号啊
编辑于 2021-06-22 13:55:52 回复(1)
个人理解,出现空格之前必定会出现4,且输出不会出现5,所以直接排除其他的,选C
编辑于 2021-03-03 16:00:57 回复(0)
你们的题解好复杂啊,1-4+空格,总共18个,数一下不就行了
发表于 2020-12-08 11:05:03 回复(0)
虽然线程之间的结果可能会交叉,但是线程内的输出是按顺序来的。所以说,每个线程的System.out.println("")一定是在4之后输出的。这样的话,就只有C满足这个条件了。这道题我选错了,没想到C后面的两个*居然是空格😞
发表于 2020-08-19 15:40:15 回复(0)