Java中ExecutorService的并发性

Java中ExecutorService的并发性,java,concurrency,Java,Concurrency,我正在使用Java1.6下面的并发特性离线执行一些任务。当通过注册创建用户时,我需要执行一些内部日志任务&我不想阻止用户,所以我一直在使用下面的代码 java.util.concurrent.ExecutorService myservice = Executors.newSingleThreadExecutor(); myservice.execute(new myTask(user)); 在这里,我有一个内部类myTask,它实现了Runnable&在Run方法中,我执行脱

我正在使用Java1.6下面的并发特性离线执行一些任务。当通过注册创建用户时,我需要执行一些内部日志任务&我不想阻止用户,所以我一直在使用下面的代码

    java.util.concurrent.ExecutorService myservice = Executors.newSingleThreadExecutor();
    myservice.execute(new myTask(user));
在这里,我有一个内部类myTask,它实现了Runnable&在Run方法中,我执行脱机活动(从而使其成为一个非阻塞调用)

现在,一旦用户登录到网站,就会有某些操作(网页上的按钮)点击,我需要执行类似的脱机活动&我不想将此调用作为阻止调用。我在此页面上有4个操作,需要在其中执行脱机任务

对4个不同的内部类使用类似的上述代码并在其中执行脱机活动可以吗??如果没有,还有什么选择


谢谢

如果您不希望出现高级别的并发请求,则可以使用Executors。在这种情况下使用

如果您的应用程序是高度并发的,并且您应该保证操作的处理(即使在jvm崩溃的情况下),并且您希望操作是事务性的,那么消息传递(JMS)可能是解决方案

我已经在web应用程序的早期成功地将Executors与池一起使用。但是,不建议在web应用程序中创建线程,也不允许在EJB中创建线程,因为线程不是由容器管理的

示例

static final int POOL_SIZE=10;
ExecutorService pool = Executors.newFixedThreadPool(POOL_SIZE);

您还可以阅读这篇漂亮的文章:

除了您的线程池之外,您还应该使用线程安全队列,以允许比可用线程更多的工作。

我使用Struts2&在struts操作中,我有这个executor线程。您能否提供关于如何实现线程池的示例行?我需要配置线程池大小吗?如果是,在哪里?我正在使用Tomcat6服务器。@Mike添加了示例代码。您需要确保只创建一次tread池,并在关闭webapp之前关闭。我对使用这些API还是新手。我可以看到您已经调用了newFixedThreadPool。但它将如何调用myTask,myTask是实现Runnable接口的内部类?我是否需要调用pool.execute(newmytask(user));另外,如果超过10个用户尝试访问该网站,会发生什么情况?本教程的for循环为10个线程500次。我如何确定这个for循环大小应该是多少?如果您能提供一些见解,我将不胜感激。