Java 使用线程使用流API获取推文,而不受速率限制
我想使用线程来流化tweet,但我的速率受到限制。我做错了什么Java 使用线程使用流API获取推文,而不受速率限制,java,multithreading,twitter,twitter-streaming-api,Java,Multithreading,Twitter,Twitter Streaming Api,我想使用线程来流化tweet,但我的速率受到限制。我做错了什么 public class AppThread { public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(5); for (int i = 0; i < 5; i++) { Runnable worker = new App("Thr
public class AppThread {
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(5);
for (int i = 0; i < 5; i++) {
Runnable worker = new App("Thread" + i);
executor.execute(worker);//calling execute method of ExecutorService
}
executor.shutdown();
while (!executor.isTerminated()) { }
System.out.println("Finished all threads");
}
我也尝试过使用newSingleThreadExecutor(),但问题依然存在。如果您在仅使用单个线程时遇到相同的问题,那么我怀疑您的问题不在线程上。如果不是,那么为什么不简化程序并尝试在没有线程的情况下执行相同的操作呢?当我不使用线程时,没有任何问题。单线程也没有问题。我想使用多线程来加速进程。在你写的问题中:“我也尝试过使用newSingleThreadExecutor(),但问题仍然是一样的。”,我想这意味着“当我使用单线程时,同样的问题也会发生。”。
public class App implements Runnable {
private String threadName;
TwitterStream twitterStream = new TwitterStreamFactory().getTwitterStreamInstance();
TwitterStreamWorker streamWorker = new TwitterStreamWorker();
public App(String name) {
this.threadName = name;
}
public void appTwitter() {
String[] queryParams = { "Delhi" };
String[] queryLang = { "en" };
FilterQuery filterQuery = new FilterQuery();
FilterQuery query = filterQuery.getFilterQueryInstance(queryParams, queryLang);
System.out.println("Query " + query);
streamWorker.startStreamingWorker(twitterStream, query);
}
public void run() {
System.out.println("Running thread " + threadName);
appTwitter();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void start() {
// TODO Auto-generated method stub
}
}