Java并发处理

Java并发处理,java,concurrency,Java,Concurrency,对于并发处理,我编写了一个执行器类: ExecutorService service = Executors.newFixedThreadPool(10); Future<List<Content>> submit = service.submit(new PushClass(pushlist, content)); List<Content> resu = submit.get(

对于并发处理,我编写了一个执行器类:

ExecutorService service = Executors.newFixedThreadPool(10);
                    Future<List<Content>> submit = service.submit(new PushClass(pushlist, content));
                    List<Content> resu = submit.get();
ExecutorService=Executors.newFixedThreadPool(10);
未来提交=服务.提交(新的PushClass(pushlist,content));
List resu=submit.get();
下面是实现可调用接口的push类:

 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;
}
公共类PushClass实现了可调用{
列表ls;
字符串内容;
公共PushClass(列表ls、字符串内容){
这1.ls=ls;
this.content=内容;
}
专用同步字符串推送(字符串msisdn、字符串内容、字符串Cli){
//点击推送url
}捕获(例外e){
e、 printStackTrace();
}
返回状态;
}
@凌驾
公共列表调用()引发异常{
对于(内容c:ls){
c、 setResponse(push(c.getMsisdn(),content,c.getCli());
}
返回ls;
}
我可以将线程增加到什么限制,以防止服务器中出现任何队列,或者我可以使池成为动态的?有时tomcat将错误显示为“另一个线程正在处理”,我可以动态地扩展它

  • 是的,连接池将有助于更好地管理数据库资源,只需打开一次连接并将其返回到池中,而不是关闭,关于池的大小,我将它留给您(即使一个也可以)
  • 为了提高性能,您可以做的最好的事情是,仅在大约500-1000条记录之后才将事务提交到数据库,以消除数据库开销
  • 您可以引入多个线程来承担传入的负载,多线程在您的情况下应该很简单,因为要完成的操作本质上是原子的(假设您只有插入),请为此探索java,您可以根据测试选择线程数,从10开始

  • 您应该尝试Apache DCP来进行连接池:考虑缓存数据库条目并将它们提交为批处理,而不是每秒插入6000个插入项。您可以同步一个方法来管理列表/队列,然后在满足阈值时将其推送到服务器上。Oracle建议您将批量大小保持在50到100的一般范围内。这是因为,尽管驱动程序支持较大的批处理,但它们反过来会导致较大的内存占用,而不会相应提高性能。“非常大的批处理通常会导致性能下降,而不是更小的批次。”@ JohnManko:谢谢你们指出,但也许他们没有考虑每秒6K的请求,从我的经验来看,只有测试和基准是肯定的,没有其他的工作。如果您可以添加评论,如果您否决,我将不胜感激。我也想学习,不要剥夺我的机会:)