package Visit;import java.net.*;
import org.apache.log4j.*;public class MainThread
extends Thread {
private Socket socket;
public MainThread() {
} static Logger lg = Logger.getLogger(MainThread.class.getName()); /**
* 线程方法
*/
public void run() {
while (true) {
if (!VisitServer.Links.isEmpty()) {
socket = (Socket) VisitServer.Links.firstElement();
Online c = new Online(socket,
String.valueOf(socket.getRemoteSocketAddress()),
"V", 0, "");
VisitServer.Onlines.addElement(c);
c.start();
VisitServer.Links.removeElementAt(0);
}
else {
try {
Thread.sleep(100);
}
catch (Exception e) {
lg.info("主后台处理线程MainThread在处理用户进入线程处理时出现错误:" + e.getMessage());
}
}
}
}
}main方法里调用上面的方法() /**
* 开启运行主线程
*/
MainThread mt = new MainThread();
mt.start();上面这个MainThread是程序开始时运行的一个线程。这个线程就是用来判断Links这个队列,如果这个队列中有新的Socket连接进来的话,这个线程就负责开启一个新的线程来处理这个Socket连接。但是现在同时有6000多个(有时6106,有时5818等,但不达到7000.)Socket同时连接在线(同时处于连接状态,没有断)的时候,这个线程就停了。即使Links有新的Socket进入队列。这个也不执行了。当这个时候,我设置了断点。主线程还是正常继续执行(当然挺慢),这个MainThread 线程还是不执行。
import org.apache.log4j.*;public class MainThread
extends Thread {
private Socket socket;
public MainThread() {
} static Logger lg = Logger.getLogger(MainThread.class.getName()); /**
* 线程方法
*/
public void run() {
while (true) {
if (!VisitServer.Links.isEmpty()) {
socket = (Socket) VisitServer.Links.firstElement();
Online c = new Online(socket,
String.valueOf(socket.getRemoteSocketAddress()),
"V", 0, "");
VisitServer.Onlines.addElement(c);
c.start();
VisitServer.Links.removeElementAt(0);
}
else {
try {
Thread.sleep(100);
}
catch (Exception e) {
lg.info("主后台处理线程MainThread在处理用户进入线程处理时出现错误:" + e.getMessage());
}
}
}
}
}main方法里调用上面的方法() /**
* 开启运行主线程
*/
MainThread mt = new MainThread();
mt.start();上面这个MainThread是程序开始时运行的一个线程。这个线程就是用来判断Links这个队列,如果这个队列中有新的Socket连接进来的话,这个线程就负责开启一个新的线程来处理这个Socket连接。但是现在同时有6000多个(有时6106,有时5818等,但不达到7000.)Socket同时连接在线(同时处于连接状态,没有断)的时候,这个线程就停了。即使Links有新的Socket进入队列。这个也不执行了。当这个时候,我设置了断点。主线程还是正常继续执行(当然挺慢),这个MainThread 线程还是不执行。
解决方案 »
- import引入时的一些错误
- java调用 关机命令,怎么写正确?
- 如何通过Jbuilder连接数据库
- 急~~~~~~~~~~~一段用javaScript写的关于打字练习代码
- jdbc连接sqlserver2000问题!
- 请问那里有java帮助文档下啊
- ~真的很想很想学JAVA的"JAVA疯子" 请进来帮我~(有分)
- 请问怎么在Java中调用Python脚本,并得到其结果?
- 请各位朋友帮忙啊!!!
- ?那位大虾有jdbc2.0连接sqlserver的例子,不要使用jdbc-odbc桥,要用sqlserver2000jdbc驱动!大哥帮我一下吧!
- 数据库中是 100.00,为什么得出的却是 100.0 呢?
- 请问如何最大化显示一个Swing窗口?
static Vector Links = new Vector(100, 10); //所有的连接