3
套件積壓意味着什麼?com.sun.HttpServer套件積壓
例如我有web服務
@WebService
public class Calculator {
public int sum(int a, int b) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return a + b;
}
public static final int threadCount = 10;
public static void main(String[] args) throws IOException {
Executor manyThreads = Executors.newFixedThreadPool(threadCount);
HttpServer server = HttpServer.create(new InetSocketAddress(8989), threadCount);
server.setExecutor(manyThreads);
server.start();
Endpoint ep = Endpoint.create(new Calculator());
HttpContext context = server.createContext("/calc");
ep.publish(context);
}
}
和Web服務客戶端
public static void main(String[] args) throws IOException {
CalculatorService service = new CalculatorService();
final Calculator calc = service.getCalculatorPort();
Executor executor = Executors.newFixedThreadPool(100);
for (int i = 0; i < 1000000; ++i) {
executor.execute(new Runnable() {
public void run() {
try {
int currentThreads = runningThreads.incrementAndGet();
int res = calc.sum(10, 10);
System.out.println("Running threads: " + currentThreads + " Result: " + res);
} catch (ClientTransportException e) {
System.out.println("connection refused");
} finally {
runningThreads.decrementAndGet();
}
}
});
}
System.in.read();
}
在服務器僅10個工作線程和積壓設置爲10,所以不可能有10個接受的連接和10在積壓和其他連接中等待的連接將被拒絕,對嗎?
可能不是我沒有得到ClientTransportException。
你能否給我解釋連接發生了什麼,以及爲什麼沒有ClientTransportException。
我在客戶端上設置了1000個線程,仍然沒有例外:) –
@misha nesterenko so?這不好嗎? – EJP
可能有時限制總等待連接的數量是好的 –