2016-06-24 2 views
1

다음은 서로 모순되는 두 개의 링크입니다. 나는 빨리 문서를 신뢰했던 :저지로 멀티 스레딩

Link 1

요청 처리를 서버 작품에서 기본적으로 그것은 이미 멀티 스레드

Link 2

동기 처리 모드에서.

내 질문 : 올

. 그것은 동기식 및 다중 스레드가 될 수 있습니까?

왜 문서는 다음?

자원 메소드 실행의 결과를 계산하는 데 오랜 시간이 걸릴 것으로 알려진 경우

서버 측 비동기 처리 모델을 사용한다라고 할

문서가 올바른 경우 기본 동작이 동기식 인 이유는 무엇입니까? 모든 요청은 기본적으로 사용자 경험을 위해 클라이언트 측 JavaScript에서 비동기 적이므로 서버 측의 기본 동작도 비동기 적이어야합니다.

클라이언트가 특정 순서로 요청을 제공 할 필요가없는 경우 누가 작업에 "비용이 많이 드는지"신경을 씁니다. 모든 작업을 단순히 비동기로 수행하면 안됩니까? 서버

답변

7

요청 처리는 각 요청은 별도의 스레드에서 처리 된 동기 처리 모드

에서 기본적으로 작동한다. 요청은 처리가 완료 될 때까지 해당 요청이 스레드를 보류하기 때문에 요청은 동기로 간주됩니다.

이미 다중 스레드되어 있습니다.

예 (서버)는 멀티 스레드입니다. 들어오는 각 요청에 대해 스레드는 스레드 풀에서 가져오고 요청은 특정 요청에 연결됩니다. 우리가 보유하지 않도록

자원 메소드 실행 결과를 계산하는 데 시간이 오래 걸릴 것으로 알려져 경우에

, 서버 측 비동기 처리 모델은

을 사용해야합니다 컨테이너 스레드 컨테이너 스레드 풀에는 매우 많은 스레드 만 요청을 처리 할 수 ​​있습니다. 긴 처리 요청으로 모두 처리하면 컨테이너에 스레드가 없어져서 다른 요청이 들어오는 것을 차단할 수 있습니다. 비동기 처리에서 Jersey는 스레드를 컨테이너로 다시 가져오고 자체적으로 요청 처리 자체를 처리합니다 스레드 풀을 프로세스가 완료 될 때까지 실행 한 다음 컨테이너에 응답을 보내면 클라이언트에게 다시 보낼 수 있습니다.

클라이언트가 특정 순서로 요청을 제공 할 필요가없는 경우 누가 작업에 "비용이 많이 드는지"신경을 씁니다.

클라이언트가 여기서 무엇을해야하는지 잘 모르겠습니다. 적어도 당신이 질문하는 방식과 관련해서는. 죄송합니다.

모든 작업이 단순히 비동기식이어야하지 않아야합니까?

모든 요청이 빠르면 반드시 그렇지는 않습니다. 비록 당신이 그것에 대해 논쟁을 벌일 수는 있지만, 그것은 성능 테스트를 필요로 할 것이고, 숫자는 당신이 서로 대항하여 거기서 결정을 내릴 수 있습니다. 모든 시스템이 다릅니다.

+0

@peeskillet 저지 컨테이너가 기본적으로 사용하는 정확한 스레드 수는 궁금합니다. –