【发布时间】:2014-03-24 22:33:53
【问题描述】:
我有 Java 中的套接字服务器和 PHP 中的其他端套接字客户端
我想通过多线程同时处理来自java中PHP的套接字请求,但是java一个接一个地做,等待完成第一个请求并开始第二个请求,
这是我的 JAVA 代码:
while (true) {
try {
clientSocket = serverSocket.accept();
int i = 0;
for (i = 0; i < maxClientsCount; i++) {
if (threads[i] == null) {
(threads[i] = new clientThread(clientSocket, threads)).start();
break;
}
}
if (i == maxClientsCount) {
PrintStream os = new PrintStream(clientSocket.getOutputStream());
os.println("Server too busy. Try later.");
os.close();
clientSocket.close();
}
} catch (IOException e) {
System.out.println(e);
}
}
class clientThread extends Thread {
public clientThread(Socket clientSocket, clientThread[] threads) {
this.clientSocket = clientSocket;
this.threads = threads;
maxClientsCount = threads.length;
}
public void run() {
int maxClientsCount = this.maxClientsCount;
clientThread[] threads = this.threads;
try {
in = new BufferedReader(new InputStreamReader(this.clientSocket.getInputStream()));
URL aURL = new URL(RecivedURL);
// start out put
System.out.println("host = " + aURL.getHost());
// end out put
粗体线是我的输出示例,但我想在同一时间同时开始输出多个启动的请求.. JAvA 等待我的代码一次性完成一个请求..
【问题讨论】:
-
首先,为什么不使用
ExecutorService而不是您自己的怪异代码?我怀疑您的工作运行时间不够长,无法同时发生。 -
您不应该扩展
Thread,只需实现Runnable并将其提供给普通Thread类的构造函数即可。 -
粗线在哪里?你是如何向 Java 提出请求的?
-
我通过 PHP 套接字方法发送它,就像 write msg ..
标签: java multithreading sockets