Я делаю программу, которая должна контролировать учетную запись Gmail для новых сообщений, и для того, чтобы получить их как можно скорее, я использую функцию простоя JavaMail. Вот фрагмент кода из потока, который я использую, для вызова folder.idle():
//Run method that waits for idle input. If an exception occurs, end the thread life.
public void run() {
IMAPFolder folder = null;
try {
folder = getFolder();
while(true)
{
//If connection has been lost, attempt to restore it
if (!folder.isOpen())
folder = getFolder();
//Wait until something happens in inbox
folder.idle(true);
//Notify controller of event
cont.inboxEventOccured();
}
}
catch (Exception ex) {
ex.printStackTrace();
}
System.out.println("MailIdleWaiter thread ending.");
}
Метод getFolder() в основном открывает соединение с сервером IMAP и открывает папку "Входящие".
Это работает некоторое время, но через 10 минут он перестает получать обновления (исключение не генерируется).
Я ищу предложения, чтобы поддерживать связь. Нужен ли мне второй поток, единственная роль которого заключается в том, чтобы спать и обновлять поток холостого хода() каждые 10 минут или есть более простой/лучший способ?
Спасибо заранее.