2012-05-25 5 views
0

단순한 TCP 버전을 구현 중이지만 멀티 스레드 기술이 부족합니다.다중 스레드 이벤트 처리

2 (타임 아웃, 다시 몇 가지 일을 메인 스레드를 통보하는 경우, 시간을 카운트 다운) 영원히 수신 패킷, 루프를 듣고

1. 타이머 : 메인 스레드는이 개 하위 스레드를 제어합니다. 패킷이 수신되면 주 스레드의 일부 데이터를 업데이트하십시오.

특정 신호가 발생할 때 주 스레드가 조치를 취해야합니다.

나는 이벤트 처리에 대한 경험이 없으며 주 스레드에 알리기 위해 신호를 디자인한다. 어디에서 시작해야합니까? 예를 들어, 하위 스레드는 주 스레드 전용 필드를 업데이트합니다. 아니면 어떤 이벤트를 만들어야합니까? 여기

는 메인 스레드에 대한 일부 의사 코드 : 당신은 자바 멀티 스레딩의 개념을 처음 사용하는 경우, 나는이 첫 번째 튜토리얼을 읽어 보시기 바랍니다

while(true){ 
    event: send data ,then ... 
    event: timeout , then send packet again 
    event: packet received, then update data in private filed 
} 
+0

어떤 연구를 수행 했습니까? 어떤 웹 자원을 보았습니까? – Gray

+0

@Grey http://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html 및 Excutor 인터페이스, BlockingQueue 인터페이스 – CodeFarmer

답변

1

: 당신의 특정 문제를 논의 http://docs.oracle.com/javase/tutorial/essential/concurrency/

을, 당신 두 스레드가 있어야합니다 : - 하나는 스레드를 확장하여 소켓을 듣기위한 것입니다. 그것은 건설 시간에 주요 물체에 대한 참조를 받고 소켓을 계속 들어야합니다. 무언가가 도착하면이 스레드는 주 개체가 처리 할 루틴을 호출합니다. 소켓이 준비되지 않은 상태에서 잠시 동안 대기중인 수확량에만주의하십시오. - 타이머가 TimerTask의 확장 일 수 있습니다. 더 많은 것을 이해하기 위해서는 http://www.cloudhadoop.com/2012/01/timers-in-java-create-timer-in-java.html을보십시오.

관련 문제