새로운 스레드입니다. 여러 분의 센서와 매 순간 1 분마다 연중 무휴로 계속 통신하고 싶습니다.다중 센서와 통신하기위한 다중 스레드
Senario는 : 나는 방법은 3 개 인수
public String perform(String command, String ip, String port)
{
//talk to the sensor and then
returns reply;
}
내가 센서의 세부 사항을 포함하는 데이터베이스가 소요 센서 이야기해야합니다.
내가 지금하고 있어요
while(true)
{
//get sensors from database
//run perform method for all instruments
for(int i=0;i<sensors.length-1;i++)
{
//call perform method and save the reply
}
Thread.sleep('one minute');
}
문제 : (100 개) 센서가 각 센서는 그 후 다음 답장을 1 초 걸리는 경우 문제는 내가 1 기다리고있을 것입니다 이 경우 일부 정보가 손실 될 수 있습니다. 솔직히 말해서 응답하는 데 1 초 이상 걸립니다.
내가 원하는 것은이며 모든 센서에 대해 데이터베이스에서 정보를 얻습니다. 다음 각 센서에 대해 하나의 스레드를 만듭니다. 그런 다음 모든 스레드를 한 번에 실행하면 정보가 반환됩니다. 그 후에 1 분을 기다린 다음 다시 시도하십시오.
도움을 주시면 감사하겠습니다.
감사
소리가 좋습니다. 내가 추가하고자하는 한 가지 의견은 각 센서가 동시에 발사하지 않도록하는 것입니다. 60000/센서 수 밀리 초의 초기 지연으로 각 센서를 예약하면 최소한의 스레드 수가 사용됩니다. 센서가 100 개인 경우 첫 번째는 0ms 지연, 두 번째는 600ms 지연, 세 번째는 1200ms 등으로 시작하십시오. 이것은 가장 적은 스레드를 사용합니다. 각 여론 조사가 끝나면 각 센서가 1 분 지연되어 다시 제출됩니다. – Gray
+1 Callable 및 ScheduledThreadPoolExecutor에 +1합니다. 시간 제한 및 예외 사항을 계획하고이를 처리하는 방법을 계획하는 것이 좋습니다. 스레드 취소 정책을 무시하지 마십시오. –
@ 그레이 - 센서 호출을 서로 뒤집어 놓는 것이 좋습니다.나는 OP가 분당 같은 순간에 모든 센서의 데이터를 가져와야하는지 또는 일부 왜곡이 받아 들여질 지 여부에 달려 있다고 생각합니다. –