解决方案 »
- 求助!代码运行一半出现java.lang.OutOfMemoryError: Java heap space
- 集合带泛型删除另个集合里相同(重复实体)
- entity bean不能够在jboss中部署
- 360安全卫士7.1借口兼容问题诱使用户强行卸载金山网盾,金山安全认为,360安全卫士的这种卸载行为是赤裸裸的病毒行为
- SSH怎么调用存储过程
- resin 与STRUTS的问题很急!!!!!!!!!!!!!!!!!!!!!!!
- 谁位大哥可以提供这样的功能代码,小弟无比感激
- 各位大神,帮小弟看一道java计算,小弟有点困惑
- 初学标签库 出现错误,在线等,马上结贴
- JSP 页面用jstl获取数据问题
- 有谁做过百度知道的签到页面
- 数据库事务(银行消费处理)
还有你说的自定义线程池是自己写的?还是JAVA自带的那个。
private void processData(Socket socket,String str){
try{
//System.out.println("--2");
//String strReceive = str;
if (str != null){
if(!str.contains("heart")){
if(getDeviceIdAndType(str,socket)==1){
//开始解析数据
//System.out.println("--3");
ProcessThread ph = new ProcessThread();
ph.run(str);
}
}
}
}catch (Exception e)
{
e.printStackTrace();
Thread.interrupted();
errorLog.error("截取数据异常"+e.toString());
}
}
里边的是数据库操作,我有跟踪,正常的时候是都处理完了。就是运行一段时间以后,处理数据线程就不再执行了。
private ThreadPoolExecutor pools = new ThreadPoolExecutor(20, 1000, 20000,
TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1000), new ThreadPoolExecutor.DiscardPolicy() );
这是线程池
TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10), new ThreadPoolExecutor.DiscardPolicy() );
我是个新手,刚开始工作。为什么长连接超过20个客户端就阻塞了呢?能解释一下吗,谢谢~~
java中的socket的读是带阻塞的,如果没有东西可读又没有关闭连接的话,线程就卡在读这里了
1.关流;
2.跳出循环条件。试试看(此分析只是个人研究你给出的代码的看法)