의사 비동기 IO
package com.honzh.mwq.bio.server.handler;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class TimeServerHandlerPool {
private ExecutorService service;
/**
* @Title: TimeServerHandlerPool
* @Description: :<br>
* <p>1.Runtime.getRuntime().availableProcessors() Java </p>
* <p>2. cmd echo %NUMBER_OF_PROCESSORS% cpu </p>
* <p>3. i3 3220, 2 4 , , 4 </p>
* <p>4. API , ,corepoolsize maxpoolsize , execute , core, ,
* core, , , , max, 。
* </p>
*
*/
public TimeServerHandlerPool() {
service = new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors(), 100, 120L, TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(1000));
}
public void execute(Runnable task) {
service.execute(task);
}
}
이 종 류 는 매우 중요 하 니 주석 에서 말 한 내용 에 주의 하 세 요.
서버 클래스
TimeServerHandlerPool pool = new TimeServerHandlerPool();
Socket socket = null;
while (true) {
socket = server.accept();
pool.execute(new TimeServerHandler(socket));
}
스 레 드 탱크 관 리 를 통 해 작업 을 요청 합 니 다.
요약:위조 비동기 IO 는 자원 지연 문 제 를 효과적으로 해결 하 였 으 나 다음 과 같은 문제 가 존재 합 니 다.입 출력 흐름 은 여전히 막 혔 습 니 다.만약 에 server 가 정 보 를 되 돌려 1 분 동안 막 았 다 면 해당 하 는 client 는 자원 을 얻 을 때 읽 기 흐름 에서 1 분 동안 막 혔 습 니 다.그 다음 에 앞으로 의 요청 이 차단 대기 열 에 다시 가입 하지 못 하면새로운 요청 이 거부 된다 면 시스템 이 무 너 지 는 것 과 같다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 기본 13. I/O스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O Byte와 Character 스트림 표준 스트림 (System.in, System.out, System.err) 스트림 단방향...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.