백그라운드 스레드에서 처리 타이머 이벤트 : doWork가 호출 될 때 내가 경험하고 마찬가지로 지금까지자바 내가 여기이 타이머가
public void doWork() throws JMSException {
String fileContent = getFileContent();
Session session = queue.getConnection().createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination dest = session.createQueue(queue.getName());
MessageProducer producer = session.createProducer(dest);
TextMessage message = session.createTextMessage();
//Different and not less than to be able to create permanent producers
for (int i = 0; i != numberOfMsgsInBurst; i++) {
message.setText(fileContent);
producer.send(message);
}
/*
* Send a non-text control message indicating end of messages.
*/
producer.send(session.createMessage());
}
:이 코드를 호출
timer = new Timer(delay, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
doWork();
} catch (JMSException e1) {
e1.printStackTrace();
}
}
});
timer.start();
타이머를 사용하면 시스템을 차단합니다 (예 : GUI). 이 doWork 메서드를 영구적으로 (numberOfMsgsInBurst를 -1로 설정하여) 실행할 수 있기를 바란다. 그래서 생성자는 영구적으로 메시지를 생성 할 것이다. 문제는 시스템을 차단하여 시스템이 응답을 멈추는 것입니다.
이 이벤트를 백그라운드 스레드에서 실행할 수있는 방법이 있습니까?
덕분에, 오스카
당신은 스레드의 doWork()을 시작할 수 있습니다
아마도 가장 좋은 방법 일 것입니다. 나는 java.util.Timer에 대해 몰랐다. –