Java 我应该使用服务吗?

Java 我应该使用服务吗?,java,multithreading,concurrency,parallel-processing,executorservice,Java,Multithreading,Concurrency,Parallel Processing,Executorservice,在我的应用程序中,我正在执行一系列SQL查询,比如作业和执行的细节,它们被插入到表中。一旦插入了任何记录,监听器就应该拿起它,开始监视执行状态,并更新同一个表中的状态 我的前端已经准备好,到目前为止,我能够执行作业(多个查询)并在表中插入详细信息。现在我想捕获执行的状态,并且我应该能够结束、暂停、重新启动执行 在讨论多线程部分时,我遇到了ExecutorService 我的问题是,我应该使用ExecutorService执行此操作吗?或者还有其他方法吗? 请共享任何教程链接。在您的情况下,我认为

在我的应用程序中,我正在执行一系列SQL查询,比如作业和执行的细节,它们被插入到表中。一旦插入了任何记录,监听器就应该拿起它,开始监视执行状态,并更新同一个表中的状态

我的前端已经准备好,到目前为止,我能够执行作业(多个查询)并在表中插入详细信息。现在我想捕获执行的状态,并且我应该能够结束、暂停、重新启动执行

在讨论多线程部分时,我遇到了ExecutorService

我的问题是,我应该使用ExecutorService执行此操作吗?或者还有其他方法吗?


请共享任何教程链接。

在您的情况下,我认为您可以使用ExecutorService并在对象中创建作业,这将帮助您以它的形式获取正在运行的作业的状态


对于教程,我更喜欢它有关于并发包的基本信息。

在您的例子中,我认为您可以使用ExecutorService并在对象中创建作业,这将帮助您以它的形式获取正在运行的作业的状态


对于教程,我更喜欢它有关于并发包的基本信息。

我使用ExecutorService运行并行单元测试。并发现它非常成功。所以我建议你使用它。请参阅

我已使用ExecutorService运行并行单元测试。并发现它非常成功。所以我建议你使用它。请参阅

也许这里对我的问题的回答有助于捕获任务的状态

虽然Executors框架非常强大,几乎可以在任何情况下使用,
也许您应该看看并发库,比如,如果使用已经解决的执行器,那么会遇到很多问题。

也许我这里的问题的答案可以帮助您捕获任务的状态

虽然Executors框架非常强大,几乎可以在任何情况下使用,
也许您应该看看并发库,比如,如果使用已解决的执行器,您将遇到很多问题。

是的。您可以
ExecuteService
Callable
Future
来实现这一点

示例代码:

import java.util.concurrent.*;
import java.util.*;
import java.util.Random;

public class CallableDemo{
    public CallableDemo(){
        System.out.println("creating service");
        ExecutorService service = Executors.newFixedThreadPool(10);

        System.out.println("Start");
        List<MyCallable> futureList = new ArrayList<MyCallable>();
        for ( int i=0; i<10; i++){
            MyCallable myCallable = new MyCallable();
            Future future = service.submit(myCallable);
            try{
                System.out.println("future.isDone = " + future.isDone());
                /* You can use future.get() blocking call set time out*/
                System.out.println("future: call ="+future.get());
            }
            catch (CancellationException ce) {
                ce.printStackTrace();
            } catch (ExecutionException ee) {
                ee.printStackTrace();
            } catch (InterruptedException ie) {
                Thread.currentThread().interrupt(); // ignore/reset
            }
        }       
        service.shutdown();
    }
    public static void main(String args[]){
        CallableDemo demo = new CallableDemo();
    }
    class MyCallable implements Callable<Long>{
        Long result = 0L;

        public MyCallable(){

        }
        public Long call(){
            // Add your business logic
            // set the result
            return result;
        }
    }
}
import java.util.concurrent.*;
导入java.util.*;
导入java.util.Random;
公共类CallableDemo{
公共CallableDemo(){
System.out.println(“创建服务”);
ExecutorService=Executors.newFixedThreadPool(10);
系统输出打印项次(“开始”);
List futureList=新建ArrayList();

对于(int i=0;iYes)。您可以
ExecuteService
Callable
Future
来实现这一点

示例代码:

import java.util.concurrent.*;
import java.util.*;
import java.util.Random;

public class CallableDemo{
    public CallableDemo(){
        System.out.println("creating service");
        ExecutorService service = Executors.newFixedThreadPool(10);

        System.out.println("Start");
        List<MyCallable> futureList = new ArrayList<MyCallable>();
        for ( int i=0; i<10; i++){
            MyCallable myCallable = new MyCallable();
            Future future = service.submit(myCallable);
            try{
                System.out.println("future.isDone = " + future.isDone());
                /* You can use future.get() blocking call set time out*/
                System.out.println("future: call ="+future.get());
            }
            catch (CancellationException ce) {
                ce.printStackTrace();
            } catch (ExecutionException ee) {
                ee.printStackTrace();
            } catch (InterruptedException ie) {
                Thread.currentThread().interrupt(); // ignore/reset
            }
        }       
        service.shutdown();
    }
    public static void main(String args[]){
        CallableDemo demo = new CallableDemo();
    }
    class MyCallable implements Callable<Long>{
        Long result = 0L;

        public MyCallable(){

        }
        public Long call(){
            // Add your business logic
            // set the result
            return result;
        }
    }
}
import java.util.concurrent.*;
导入java.util.*;
导入java.util.Random;
公共类CallableDemo{
公共CallableDemo(){
System.out.println(“创建服务”);
ExecutorService=Executors.newFixedThreadPool(10);
系统输出打印项次(“开始”);
List futureList=新建ArrayList();
对于(int i=0;i