Код: Выделить всё
this.mailboxExecutor = Executors.newCachedThreadPool();
ConcurrentHashMap future =
mailboxExecutor.submit(
() -> {
Thread.currentThread().setName("MailboxService-User-" + user.getId());
LOG.debug("Started new thread: {}", Thread.currentThread().getName());
mailboxConnectionHandler.listenToMailbox(user);
});
mailboxFutures.put(user.getId(), future);
}
Код: Выделить всё
void listenToMailbox(User user) throws MessagingException {
Settings settings = user.getSettings();
Properties properties = getProperties(settings);
Store store = createStoreSession(properties, user);
IMAPFolder inbox = openInbox(store);
addMessageCountListener(inbox, user);
LOG.debug("Issuing IMAP idle command for mailbox of user {}.", user.getId());
inbox.idle();
}
после прочтения некоторых сообщений о переполнении стека и IMAP IDLE RFC мне нужно иметь возможность закрыть почтовый ящик пользователя, чтобы сломать команду на холостом ходу. Threadlocal inboxThreadLocal = new Threadlocal (); < /code> Чтобы установить его, но, поскольку я использую службу исполнителя, я думаю, что это небезопасно, потому что это пул потоков и потоки повторно используется, поэтому я обеспокоен тем, что я использую поток «неправильный /старый». < /p>
мой вопрос < /h2>
< /p>
< /h2>
< /p> precial variables. Использовал Concurrenthashmap с идентификатором пользователя является ключом.
Подробнее здесь: https://stackoverflow.com/questions/796 ... torservice