バックグラウンドスレッドでの処理タイマーイベント:doWorkがで呼び出されたとき、私は、経験しています限りJavaの私はここにこのタイマーを持って
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に設定して)実行できるようにしたいので、プロデューサは永久にメッセージを生成します。 私が抱えている問題は、システムが応答を停止するようにシステムをブロックしていることです。
このイベントをバックグラウンドスレッドで発生させる方法はありますか?スレッド内
おかげで、 オスカー
これはおそらく最適な方法です。私はjava.util.Timerについて知らなかった。 –