作者tkcn (小安)
看板java
标题Re: [问题] Address already in use: JVM_Bind
时间Mon Aug 8 23:46:41 2011
※ 引述《fasthall (Xen)》之铭言:
: 一般来说我在等待时按下取消可以很正常的关闭等待
: 只会因为thread被close而产生例外(可以忽视)
: 而下次再按下开始等待时client可以正常连进来
: 但是我发现偶尔我很迅速的按下开始後马上按下取消
: 会在(注1)这行丢出Address already in use: JVM_Bind例外
这个错误讯息的意思是,
指定的 port 已经被使用了,
所以建立 Server Socket 时出现问题。
从你文中叙述看来,
不太可能是其他程序占用相同的 port,
只可能是目前的这支程式。
然而依序按下开始与取消,
只会建立一次 Server Socket,
实在没有理由出现这样的错误,
比较合理的解释是前一次的 ServerSocket 没有被成功关闭。
这时候就不难猜出问题所在了,
建立新的 thread 并 start 时,
并不会保证立刻开始执行 thread,
而当你按开始并迅速取消时,
取消的 code 执行完了,但 ServerSocket 根本还没建立,
此时你的 GUI 回到了取消後的状态,而 ServerSocket 建立後却依然活着,
到了下一回合按下开始又创出新的 ServerSocket,自然就出现 Error 了。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.78.231
※ 编辑: tkcn 来自: 140.114.78.231 (08/08 23:47)
※ 编辑: tkcn 来自: 140.114.78.231 (08/08 23:52)
1F:推 fasthall:真是神奇的bug 难怪我想破头都想不出来...... 08/09 00:17
2F:推 LaPass:多执行绪就是这麽神奇..... 08/09 12:37
3F:推 a1234957:久病成良医 08/10 22:47