作者tkcn (小安)
看板java
标题Re: [问题] thread问题
时间Sun Aug 20 20:57:51 2006
※ 引述《YRED (~~~)》之铭言:
: 整个一对一聊天原始码~
: http://www.javaworld.com.tw/jute/post/view?bid=35&id=34182&sty=1&tpg=1&age=0
: 这个我compiler过了~也确定可执行
: 每次client或server端丢讯息时~(接enter键)
: 我刚说的while回圈就会再跑一次~这样才会看到对方丢的讯息
: 歹势~我是新手~
: 整个程式码~都看过了~
: 还是不知道为何会这样~
: 然後~我看head first java那本~
: 也是这样写~
老实说,你叙述的不是很清楚
我看了很多遍,才真正了解你的意思
其实不管是 readLine() 或着是其他的 read 方法都一样
要遭遇到 EOF (End Of File) 的时候,其回传值才会是 null (这里是以 readLine 为例)
但是呢,网路上的 Stream 在传送方并没有传送资料时,
并不会传送 EOF,TCP 的连线是一直 keep 住的。
而对於接收方,不管是不是网路的 stream,read 是一种 synchronized IO
简单的说,在目前这个 thread 一定要完成 read 的动作之後,才能执行下一个指令
(有兴趣的话请参考 Operating System)
所以说这支程式并不是离开回圈、结束 thread,
只是在 readLine() 时进入了 block state,
等待有资料时,这个 thread 才又回到 running state 继续执行。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.126.173.31
※ 编辑: tkcn 来自: 59.126.173.31 (08/20 21:00)