引用:盛涛 发表于 2017-03-03 13:01 互相学习,过奖了 |
引用:盛涛 发表于 2017-03-03 13:11 能解决就好 |
刚试了下,果真如此,感谢 |
不管如何,感谢您认真的态度,并表达对您技术能力的敬仰。 |
虽然你绕来绕去我没看明白你的精确表述,不过,我可以很有把握的告诉你,卡住应该是客户端卡住了。 客户端卡住的原因是: 因为Swing这种GUI程序,UI线程调度跟后台线程交叉进行,是有发生死锁的风险(至于为什么,这就需要对Swing非常精通才能理解),也就是那段把log显示到JTextPane的代码导致的,你把log显示到JTextPane的代码注释掉或改进直接输出到控制台下,应该就不会卡了。 写这个demo我为了简化理解,没有处理这个多线程的风险而已,最佳实践是:有Log输出的时候不应该由网络后台直接调用ui显示方法,而应该搞一个中间队列,一个生产一个消费,两边各自的线程不会有直接交叉,就不会有卡住风险了。不信你试试 |
引用:盛涛 发表于 2017-03-03 10:23 你这说的到底是什么跟什么,我也没分清。 你把要表述的内容整理一下呢,到底是什么跟什么。 |
是客户端卡住 |
刚试了下,直接运行Demo服务器和java客户端Demo没有再现上面现象。但用Demo服务器加上java客户端Demo源码编译后的程序确实有上面现象。而且奇怪的是前者分配的id为17170等,后者分配的是10001. |
引用:盛涛 发表于 2017-03-03 09:47 我没看明白你到底是客户端卡住还是服务端卡住。 |
JVM没有崩溃,是java客户端程序卡住,关闭按钮什么的无法操作。客户端登陆后应该进入主窗口,程序卡在登录窗口中,如上图。jdk1.6 32位。开发机是win7 32位,服务器和客户端暂时在开发机运行。 |
你的log上看不出异常。 你说的“死机”是什么情况?JVM崩溃?还是程序卡住? 另外,你需要列出你的java详细版本(包括是32位还是64位),还有windows的详细版本(包括是32位还是64位)。我帮你诊断看看。 |