发布网友 发布时间:2023-12-18 01:30
共2个回答
热心网友 时间:2024-02-11 15:23
不仅是这两个线程,输出流也是个线程,接受输入的不一定马上输出,看输出的缓冲和系统本身的调度了。热心网友 时间:2024-02-11 15:23
线程每次执行的时间是由系统的时间片决定的,线程1可能执行了++i运算,但是时间片就用完了,没来得及输出,然后就轮到线程2了,所以就造成了你的这种情况。追问如果是这种情况,那么线程2到时也不会把正确的值输出。这个时候变成了线程2输出8才对啊,6这个值就直接不曾输出过才对。追答不是的,当线程1输出了5,线程2开始执行,对i进行了加运算,i就变成了6,但是没来的及输出,就阻塞了,然后线程1就从7开始,把7输出,这时,又轮到线程2执行,线程2就把6输了出来,然后又轮到线程1执行。