栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

停止Twitter流并使用twitter4j返回状态列表

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

停止Twitter流并使用twitter4j返回状态列表

将异步代码强制进入同步模式不是一个好主意。换句话说:使您的check方法也异步,传递一个回调参数而不是返回一个值;并将回调传递给execRequest(只需s将对每个分配的调用替换为该回调)。正如Jai所建议的那样,您不一定需要在应用程序范围的事件总线上触发事件:它有助于解耦,但这并不总是您所需要/想要的。

查看是否可以重做逻辑。

但是,以下代码根据您的要求工作。

public class Stream {  public static void main(String[] args) throws TwitterException {    Stream stream = new Stream();    stream.execute();  }  private final Object lock = new Object();  public List<Status> execute() throws TwitterException {    final List<Status> statuses = new ArrayList();    ConfigurationBuilder cb = new ConfigurationBuilder();    cb.setDebugEnabled(true);    cb.setOAuthConsumerKey("bbb");    cb.setOAuthConsumerSecret("bbb");    cb.setOAuthAccessToken("bbb");    cb.setOAuthAccessTokenSecret("bbb");    TwitterStream twitterStream = new TwitterStreamFactory(cb.build())        .getInstance();    StatusListener listener = new StatusListener() {      public void onStatus(Status status) {        statuses.add(status);        System.out.println(statuses.size() + ":" + status.getText());        if (statuses.size() > 100) {          synchronized (lock) { lock.notify();          }          System.out.println("unlocked");        }      }      public void onDeletionNotice(          StatusDeletionNotice statusDeletionNotice) {        System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId());      }      public void onTrackLimitationNotice(int numberOfLimitedStatuses) {        System.out.println("Got track limitation notice:" + numberOfLimitedStatuses);      }      public void onScrubGeo(long userId, long upToStatusId) {        System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId);      }      public void onException(Exception ex) {        ex.printStackTrace();      }      @Override      public void onStallWarning(StallWarning sw) {        System.out.println(sw.getMessage());      }    };    FilterQuery fq = new FilterQuery();    String keywords[] = { "federer", "nadal", "#Salute" };    fq.track(keywords);    twitterStream.addListener(listener);    twitterStream.filter(fq);    try {      synchronized (lock) {        lock.wait();      }    } catch (InterruptedException e) {      // TODO Auto-generated catch block      e.printStackTrace();    }    System.out.println("returning statuses");    twitterStream.shutdown();    return statuses;  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/454552.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号