併發處理我已經寫和執行類:Java併發處理
ExecutorService service = Executors.newFixedThreadPool(10);
Future<List<Content>> submit = service.submit(new PushClass(pushlist, content));
List<Content> resu = submit.get();
和下面是實現可調用接口的推類:
public class PushClass implements Callable<List<Content>> {
List<Content> ls;
String content;
public PushClass(List<Content> ls, String content) {
this.ls = ls;
this.content = content;
}
private synchronized String push(String msisdn, String content, String Cli) {
// hitting the push url
} catch (Exception e) {
e.printStackTrace();
}
return status;
}
@Override
public List<Content> call() throws Exception {
for (Content c : ls) {
c.setResponse(push(c.getMsisdn(), content, c.getCli()));
}
return ls;
}
高達什麼限制我可以增加線程以防止任何排隊在服務器或我可以使池動態?有時tomcat顯示錯誤,因爲「其他線程正在處理中」,我可以動態縮放它。
您應該嘗試使用Apache DBCP進行連接池:https://commons.apache.org/proper/commons-dbcp/ –
考慮緩存數據庫條目並將它們提交爲而不是每秒有6000個插入。 – John
您可以同步一個方法來管理List/Queue,然後在達到閾值時推送到服務器。 –