Хранение специфических переменных потока с использованием ExecutorServiceJAVA

Программисты JAVA общаются здесь
Anonymous
Хранение специфических переменных потока с использованием ExecutorService

Сообщение Anonymous »

Привет, у меня есть приложение, которое подключается к N входящим входящим пользователям. Поскольку я не не буду опросить новые сообщения, я использую команду imap idle и слушатель подсчета сообщений для прослушивания новых сообщений.

Код: Выделить всё

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);
}
mailboxconnectionHandler

Код: Выделить всё

 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

Вернуться в «JAVA»