黑马网友
发表于 2011-8-21 17:17:40
沙发
我做了个测试
当我输入:
s+回车(也就是输入一个字符+回车键)
结果为:
1,2,3
当我输入:
s+回车(也就是输入二个字符+回车键)
结果为:
1,2,3,4
这样看来解释就是
当运行到read的时候程序为wait状态 当你输入字符后按回车键后
程序就调用notify解除了wait状态,程序运行第一次循环输出1,并且在内存中多了
你输入的字符+回车键;当循环第二次执行到read,它发现内存中有你之前输入的字符就不在是wait状态
而是直接读取内存,read方法每次也只读取一个字符,所以当读取完,再次碰到read方法就会继续等待键盘输入
所以如果你第一次输入的字符串长度大于你的数组循环就会顺利的执行成功! |
|