Я пытаюсь использовать функции потоковой передачи Twitter4j. Итак, моя реализация находится в следующем классе:
public class TweetsStream {
private TwitterStream m_twitterstream;
private StatusListener m_statusListener;
public void printStream(...)
// Stream
m_twitterstream = null;
m_twitterstream = TwitterStreamFactory.getSingleton();
// Listener
m_statusListener = new StatusListenerRedefined(...);
m_twitterstream.addListener(m_statusListener);
// Filter
FilterQuery l_filter = new FilterQuery();
l_filter.track(... );
// Launch
m_twitterstream.filter(l_filter);
}
public void stopStream(){
m_twitterstream.shutdown();
m_logger.info("shutdown done");
m_twitterstream = null;
m_statusListener = null;
}
}
Мой новый StatusListener() выводит статус в консоль.
Затем я создаю объект TweetsStream
в другом классе сервлета:
@WebServlet("/Controler")
public class Controler extends HttpServlet {
private static final long serialVersionUID = 1L;
// Logger
protected final static Logger m_logger = Logger.getLogger("Controler");
//Stream
private TweetsStream m_tweetStream;
//Function...
m_tweetStream = new TweetsStream(...);
m_tweetStream.printStream(...);
}
Поток работает идеально. Поэтому я пытаюсь сейчас остановить это. В том же классе у меня есть функция:
private void stopStream(){
m_tweetStream.stopStream();
m_tweetStream = null;
}
Поток остановлен в консоли, все нормально.
НО Когда я вспоминаю в том же классе свою функцию:
//Function...
m_tweetStream = new TweetsStream(...);
m_tweetStream.printStream(...);
Это как если бы я только что возобновил предыдущий поток m_twitter с добавлением одного слушателя. Так что у меня по две копии каждого твита...
Как полностью убить поток? И когда я перезапускаю его, как только последний StatusListener ?
Спасибо !