遇到前所未遇到的问题,求助各位。 javajava seJAVA SESocketserverSocket 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 输入输出使用的什么流包装的啊!一般使用DataInputStream和DataOutputStream流的readUTF()和writeUTF()方法读写字符串! 不是的,如果存到缓冲区,那么debug和正常运行整个流程执行完毕也不会有差别吧? 我遇到的是DEBUG和正常运行不一样。 可以帮忙看看吗? 我都试过,就是正常运行和debug出来的效果不一样。很奇怪,按正常逻辑没有区别。但是却有区别了。 这个我知道,我的问题是正常执行程序和debug得到不同的显示效果。 很奇怪,按道理应该是一样的。因为都是一次程序执行。 每要传输一堆数据,立即调用一下流的 flush(). DEBUG时,会flush的。 这个我知道,我的问题是正常执行程序和debug得到不同的显示效果。 很奇怪,按道理应该是一样的。因为都是一次程序执行。代码可以看看吗? 这个我知道,我的问题是正常执行程序和debug得到不同的显示效果。 很奇怪,按道理应该是一样的。因为都是一次程序执行。代码可以看看吗?可以。可以留个邮箱吗? 我把全部发给你。谢谢了~ 这个我知道,我的问题是正常执行程序和debug得到不同的显示效果。 很奇怪,按道理应该是一样的。因为都是一次程序执行。代码可以看看吗?可以。可以留个邮箱吗? 我把全部发给你。谢谢了~ 这个我知道,我的问题是正常执行程序和debug得到不同的显示效果。 很奇怪,按道理应该是一样的。因为都是一次程序执行。代码可以看看吗?可以。可以留个邮箱吗? 我把全部发给你。谢谢了~ 每要传输一堆数据,立即调用一下流的 flush(). DEBUG时,会flush的。 我没有用到缓冲流的。 不要的吧? 这个我知道,我的问题是正常执行程序和debug得到不同的显示效果。 很奇怪,按道理应该是一样的。因为都是一次程序执行。代码可以看看吗?可以。可以留个邮箱吗? 我把全部发给你。谢谢了~#zxd6587#@#163.#com#去掉 这个我知道,我的问题是正常执行程序和debug得到不同的显示效果。 很奇怪,按道理应该是一样的。因为都是一次程序执行。代码可以看看吗?可以。可以留个邮箱吗? 我把全部发给你。谢谢了~#zxd6587#@#163.#com#去掉发了。先谢谢。 [email protected]发了。先谢谢,代码没写完。就是遇到问题就没写下去了 [email protected] 代码发给我 我帮你看看 问题出在这里!当你启动服务端的时候就一直在遍历存入socket的list集合!如果一个线程在遍历的时候你另一个线程修改集合内容就会抛出java.util.ConcurrentModificationException 异常!就是不允许加入!当上一个线程还在遍历的时候你这个线程往集合中加入内容 上图中的代码就会抛异常!Exception in thread "Thread-3" java.util.ConcurrentModificationException ReceviedThread(也就是Thread-3)就停止运行了!所以你客户端发送的信息已经没有线程接收!所以在看不到任何输出,就以为没有收到!此时也就不存在遍历list情况!再连接其他客户端也就不会再抛异常!当你使用debug模式时!ReceviedThread会停在你打断点的地方没有一直遍历list集合!所以客户端连接进来时操作list集合(第二张图)不会抛异常!所以能够正常显示输出内容! 楼主明白了吗? 谢谢,知道原因了。 通过synchronized锁list对象应该可以解决问题吧。? 谢谢,知道原因了。 通过synchronized锁list对象应该可以解决问题吧。?自己使用synchronized比较麻烦!因为有一个线程一直在遍历list容器,所以会一直持有这个对象锁!对list插入的那个线程一直无法获取到对象锁就一直等待!我记得Collections有个一静态方法Collections.synchronizedList(List<> list);可以返回一个同步控制的List!你可以试试!你那样读客户端发来的信息还有一个问题!当你获取到一个客户端的输入流使用in.read(buffer);读进buffer数组!read方法是个阻塞方法!也就是说程序会停在这里等着客户端发信息!其他客户端发的信息时无法显示的!因为程序等另一个客户端发信息!还没有遍历到发信息的这个客户端的socket!楼主明白我说 的意思吗??一般是一个客户端连进来服务器就开一个线程!而不是像这样一个线程服务所有客户端发来信息! 谢谢,知道原因了。 通过synchronized锁list对象应该可以解决问题吧。?自己使用synchronized比较麻烦!因为有一个线程一直在遍历list容器,所以会一直持有这个对象锁!对list插入的那个线程一直无法获取到对象锁就一直等待!我记得Collections有个一静态方法Collections.synchronizedList(List<> list);可以返回一个同步控制的List!你可以试试!你那样读客户端发来的信息还有一个问题!当你获取到一个客户端的输入流使用in.read(buffer);读进buffer数组!read方法是个阻塞方法!也就是说程序会停在这里等着客户端发信息!其他客户端发的信息时无法显示的!因为程序等另一个客户端发信息!还没有遍历到发信息的这个客户端的socket!楼主明白我说 的意思吗??一般是一个客户端连进来服务器就开一个线程!而不是像这样一个线程服务所有客户端发来信息!谢谢。之前的同步问题我通过锁List对象也能成功了,通过对象的wait()和notify()可以解决、。但你说的第二个问题,就是read()读数组,确实是个问题。我也在想办法解决。请问有什么好的方法吗?如果不改思路的情况下。 多谢你的帮助,学到了很多东西。 谢谢,知道原因了。 通过synchronized锁list对象应该可以解决问题吧。?自己使用synchronized比较麻烦!因为有一个线程一直在遍历list容器,所以会一直持有这个对象锁!对list插入的那个线程一直无法获取到对象锁就一直等待!我记得Collections有个一静态方法Collections.synchronizedList(List<> list);可以返回一个同步控制的List!你可以试试!你那样读客户端发来的信息还有一个问题!当你获取到一个客户端的输入流使用in.read(buffer);读进buffer数组!read方法是个阻塞方法!也就是说程序会停在这里等着客户端发信息!其他客户端发的信息时无法显示的!因为程序等另一个客户端发信息!还没有遍历到发信息的这个客户端的socket!楼主明白我说 的意思吗??一般是一个客户端连进来服务器就开一个线程!而不是像这样一个线程服务所有客户端发来信息!谢谢。之前的同步问题我通过锁List对象也能成功了,通过对象的wait()和notify()可以解决、。但你说的第二个问题,就是read()读数组,确实是个问题。我也在想办法解决。请问有什么好的方法吗?如果不改思路的情况下。 多谢你的帮助,学到了很多东西。不改变思路的话用这种阻塞式方法肯定不合适!可以尝试使用 nio 非阻塞!不过我也不是很熟!不过我建议还是一个客户端开一个子线程服务! 真实应用每连接进来一个客户端起一个子线程也不合理!太耗费资源!应该也是实用nio解决的!楼主好好研究一下nio吧!请猛点此链:http://shixm.iteye.com/blog/1792015 真实应用每连接进来一个客户端起一个子线程也不合理!太耗费资源!应该也是实用nio解决的!楼主好好研究一下nio吧!请猛点此链:http://shixm.iteye.com/blog/1792015太感谢你了。我研究后试试能不能不改思路的情况下做出来 String问题 HttpURLConnection的connect()方法作用 在页面text中输入要查询的关键字,在检索结果中将关键字高亮显示,类似百度Google那样,怎么做啊? JAVA新手入门应看哪本书 ★★★★★专用java资料FTP空间开通,奉献给喜欢将java资料共享的朋友。★★★★★ 我的数据库是access的叫alb,这么连接多吗? 关于BorderLayout中的一块区域的大小如何调整的问题? Java的类可以不写构造函数吗? 操作时经常自动关闭tomcat的服务器。 多线程问题 匿名内部类 一个简单例子:关于java线程对象的销毁问题, 非常困惑!
不是的,如果存到缓冲区,那么debug和正常运行整个流程执行完毕也不会有差别吧? 我遇到的是DEBUG和正常运行不一样。
可以帮忙看看吗? 我都试过,就是正常运行和debug出来的效果不一样。很奇怪,按正常逻辑没有区别。但是却有区别了。
这个我知道,我的问题是正常执行程序和debug得到不同的显示效果。 很奇怪,按道理应该是一样的。因为都是一次程序执行。
每要传输一堆数据,立即调用一下流的 flush(). DEBUG时,会flush的。
这个我知道,我的问题是正常执行程序和debug得到不同的显示效果。 很奇怪,按道理应该是一样的。因为都是一次程序执行。
代码可以看看吗?
这个我知道,我的问题是正常执行程序和debug得到不同的显示效果。 很奇怪,按道理应该是一样的。因为都是一次程序执行。
代码可以看看吗?可以。可以留个邮箱吗? 我把全部发给你。谢谢了~
这个我知道,我的问题是正常执行程序和debug得到不同的显示效果。 很奇怪,按道理应该是一样的。因为都是一次程序执行。
代码可以看看吗?可以。可以留个邮箱吗? 我把全部发给你。谢谢了~
这个我知道,我的问题是正常执行程序和debug得到不同的显示效果。 很奇怪,按道理应该是一样的。因为都是一次程序执行。
代码可以看看吗?可以。可以留个邮箱吗? 我把全部发给你。谢谢了~
每要传输一堆数据,立即调用一下流的 flush(). DEBUG时,会flush的。 我没有用到缓冲流的。 不要的吧?
代码可以看看吗?可以。可以留个邮箱吗? 我把全部发给你。谢谢了~
#zxd6587#@#163.#com
#去掉
代码可以看看吗?可以。可以留个邮箱吗? 我把全部发给你。谢谢了~
#zxd6587#@#163.#com
#去掉
发了。先谢谢。
发了。先谢谢,代码没写完。就是遇到问题就没写下去了
问题出在这里!
当你启动服务端的时候就一直在遍历存入socket的list集合!如果一个线程在遍历的时候
你另一个线程修改集合内容就会抛出java.util.ConcurrentModificationException 异常!就是不允许加入!
当上一个线程还在遍历的时候你这个线程往集合中加入内容 上图中的代码就会抛异常!Exception in thread "Thread-3" java.util.ConcurrentModificationException ReceviedThread(也就是Thread-3)就停止运行了!所以你客户端发送的信息已经没有线程接收!所以在看不到任何输出,就以为没有收到!此时也就不存在遍历list情况!再连接其他客户端也就不会再抛异常!
当你使用debug模式时!ReceviedThread会停在你打断点的地方没有一直遍历list集合!所以客户端连接进来时操作list集合(第二张图)不会抛异常!所以能够正常显示输出内容!
楼主明白了吗?
自己使用synchronized比较麻烦!因为有一个线程一直在遍历list容器,所以会一直持有这个对象锁!对list插入的那个线程一直无法获取到对象锁就一直等待!
我记得Collections有个一静态方法Collections.synchronizedList(List<> list);可以返回一个同步控制的List!你可以试试!你那样读客户端发来的信息还有一个问题!当你获取到一个客户端的输入流使用in.read(buffer);读进buffer数组!read方法是个阻塞方法!也就是说程序会停在这里等着客户端发信息!其他客户端发的信息时无法显示的!因为程序等另一个客户端发信息!还没有遍历到发信息的这个客户端的socket!楼主明白我说 的意思吗??一般是一个客户端连进来服务器就开一个线程!而不是像这样一个线程服务所有客户端发来信息!
自己使用synchronized比较麻烦!因为有一个线程一直在遍历list容器,所以会一直持有这个对象锁!对list插入的那个线程一直无法获取到对象锁就一直等待!
我记得Collections有个一静态方法Collections.synchronizedList(List<> list);可以返回一个同步控制的List!你可以试试!你那样读客户端发来的信息还有一个问题!当你获取到一个客户端的输入流使用in.read(buffer);读进buffer数组!read方法是个阻塞方法!也就是说程序会停在这里等着客户端发信息!其他客户端发的信息时无法显示的!因为程序等另一个客户端发信息!还没有遍历到发信息的这个客户端的socket!楼主明白我说 的意思吗??一般是一个客户端连进来服务器就开一个线程!而不是像这样一个线程服务所有客户端发来信息!
谢谢。之前的同步问题我通过锁List对象也能成功了,通过对象的wait()和notify()可以解决、。但你说的第二个问题,就是read()读数组,确实是个问题。我也在想办法解决。请问有什么好的方法吗?如果不改思路的情况下。 多谢你的帮助,学到了很多东西。
自己使用synchronized比较麻烦!因为有一个线程一直在遍历list容器,所以会一直持有这个对象锁!对list插入的那个线程一直无法获取到对象锁就一直等待!
我记得Collections有个一静态方法Collections.synchronizedList(List<> list);可以返回一个同步控制的List!你可以试试!你那样读客户端发来的信息还有一个问题!当你获取到一个客户端的输入流使用in.read(buffer);读进buffer数组!read方法是个阻塞方法!也就是说程序会停在这里等着客户端发信息!其他客户端发的信息时无法显示的!因为程序等另一个客户端发信息!还没有遍历到发信息的这个客户端的socket!楼主明白我说 的意思吗??一般是一个客户端连进来服务器就开一个线程!而不是像这样一个线程服务所有客户端发来信息!
谢谢。之前的同步问题我通过锁List对象也能成功了,通过对象的wait()和notify()可以解决、。但你说的第二个问题,就是read()读数组,确实是个问题。我也在想办法解决。请问有什么好的方法吗?如果不改思路的情况下。 多谢你的帮助,学到了很多东西。不改变思路的话用这种阻塞式方法肯定不合适!可以尝试使用 nio 非阻塞!不过我也不是很熟!
不过我建议还是一个客户端开一个子线程服务!
真实应用每连接进来一个客户端起一个子线程也不合理!太耗费资源!应该也是实用nio解决的!楼主好好研究一下nio吧!请猛点此链:http://shixm.iteye.com/blog/1792015
真实应用每连接进来一个客户端起一个子线程也不合理!太耗费资源!应该也是实用nio解决的!楼主好好研究一下nio吧!请猛点此链:http://shixm.iteye.com/blog/1792015太感谢你了。我研究后试试能不能不改思路的情况下做出来