2009-06-23 8 views
0

여러 클라이언트가 있고 단일 서버로 제어되는 클라이언트 - 서버 응용 프로그램을 수행하는 중 ... 여기에 모든 클라이언트의 화면 캡처 및 towords 서버 ... 보내기 그것은 멀티 스레딩이 필요합니다 .... 아무도 내 응용 프로그램에서 멀티 스레딩을 어떻게 사용할 수 있습니까?멀티 스레딩

+0

이러한 응용 프로그램은 스윙 기반입니까? 어떤 종류의 의사 소통이 그들 사이에 있습니까? – akarnokd

+1

정확히 어디에서 멀티 스레딩해야합니까? - 클라이언트에서 클라이언트가 이러한 이미지를 전송할뿐만 아니라 다른 기능도 가지고 있기 때문에 - 서버에서 멀티 스레딩이 이미지 수신 성능을 향상시킬 수 있다고 생각하기 때문에 - 서버에서 다시 서버가 제공하므로 일부 다른 기능성 GUI와 사용자 상호 작용이 있습니까? 스윙/SWT? – sebastiangeiger

+3

나는 무례한 소리를 내고 싶지 않지만, 이와 같은 질문을하는 경우에는 서버 측 스레드 모델을 구현하는 사람이 아닙니다.스레드의 주제와 사용법은 단순 함과는 거리가 멀며 함정에 빠져 있습니다. 결코 예상대로 작동하지 않습니다. 이 문제와 다른 문제가 이미 해결 된 앱 서버를 직접 다운로드하고 다운로드하십시오. –

답변

1

java.util.concurrent 읽기 최대 을 Runnable 인터페이스보다 더 나은입니다 Callable 인터페이스 특히 이전 버전의 Java에서는 call 메소드에서 값을 반환 할 수 있기 때문에 (run met 벽돌 상자). 스레드 풀은 Executor 클래스에 의해 ExecutorServices으로 생성되므로 스레드 수를 제한 할 수 있으므로 서버 측의로드가 제한됩니다. 물론 이것들에 대한 JavaDoc의 예제는 클라이언트로부터의 연결을 받아들이는 간단한 서버이므로 사용자의 상황에 적용 할 수 있습니다 (명확하게 설명하지는 않았지만).

그렇지 않으면 스레딩이 실제로 여기 게시물에서 대답 할 수없는 매우 큰 주제입니다. Java Threading에 대한 책을 구입할 수는 있지만 어느 것이 최상인지는 알 수 없습니다.

+1

내가 자바 동시성에 대해 읽은 최고의 책은 Brian Goetz (http://jcip.net/)의 Java Concurrency in Practice입니다. –

0

설명했듯이 분명히 멀티 스레딩 문제는 아닙니다.

  • 클라이언트 주도형 시나리오 (즉, 클라이언트가 화면을 보낼시기를 선택하는 경우)에서 서버의 메소드를 호출하도록 할 수 있습니다. 이 서버 기반 인 경우
  • , 당신은 옵저버 패턴을 사용할 수

어느 쪽이든, 문제는 당신이 설명한대로, 당신이 멀티 스레딩을 피할 수있는 경우!

0

이상적으로는 웹 서버 또는 앱 서버를 사용하여 서버를 구현해야합니다.이 서버는 이미이를 처리합니다.

사용자 지정 서버 일 경우 이미 설명한 것처럼 스레드 풀을 체크 아웃해야합니다. 작업자 스레드가 수행하는 작업에 스레드 안전성이 필요하지 않은 (즉, 성능을 위해 단순한 동시 디스 패칭 이슈) 문제가없는 경우라면 충분합니다.

스레드 세이프 프로그래밍에 대한 충분한 지식이 필요하다면, 더 많은 연구를해야하고 책을 읽고, 이상적으로는 멘토링을 받아야합니다.