Java 关于可调用接口中的call()方法。在call()中调用其他静态方法时,它是否会被阻止并影响性能?

Java 关于可调用接口中的call()方法。在call()中调用其他静态方法时,它是否会被阻止并影响性能?,java,json,multithreading,static-methods,callable,Java,Json,Multithreading,Static Methods,Callable,我通过ExecutorService创建了一个线程池,并提交了10个要运行的任务,如下所示: ExecutorService exec = Executors.newCachedThreadPool(); ArrayList<Future<String>> results = new ArrayList<Future<String>>(); for(int i = 0; i < 10; i++){

我通过ExecutorService创建了一个线程池,并提交了10个要运行的任务,如下所示:

ExecutorService exec = Executors.newCachedThreadPool();  
    ArrayList<Future<String>>  results = new ArrayList<Future<String>>();  
    for(int i = 0; i < 10; i++){  
        results.add(exec.submit(new TaskWithResult(//parameters...)));  
    } 

我不知道这些线程是否会被阻塞?因为我想如果只有一个线程可以调用静态方法

方法X可以由多个线程同时调用,除非它(或它的类)是同步的,在这种情况下,调用方将按时间顺序序列化


也就是说,只要确保X是线程安全的。

方法X可以由多个线程同时调用,除非它(或它的类)是同步的,在这种情况下,调用方将按时间顺序序列化


也就是说,只需确保X是线程安全的。

在调用meyHod中执行第一个代码段(执行器)的地方,这很可能会导致糟糕的性能。当每个线程重新加载新的JSON文件时。因此,您不仅要重复工作,还将导致硬盘抖动。我不知道您使用的是什么库,但是如果
JSONObject
是线程安全的,您应该加载它一次并重用它,否则您需要重新考虑您的方法。我创建了一个测试类来执行第一个代码段什么是“只有线程才能调用静态方法”?只有线程可以调用任何方法。或者,EJP试图告诉您的是线程是执行代码的。程序执行的每个语句(包括每个方法调用)都发生在某个线程中。当程序首次启动时,它的
main()
例程在主线程中被调用,这并不比任何其他线程更特殊。在调用MEYHOD中执行第一个代码段(执行器)的地方,这很可能会导致糟糕的性能。当每个线程重新加载新的JSON文件时。因此,您不仅要重复工作,还将导致硬盘抖动。我不知道您使用的是什么库,但是如果
JSONObject
是线程安全的,您应该加载它一次并重用它,否则您需要重新考虑您的方法。我创建了一个测试类来执行第一个代码段什么是“只有线程才能调用静态方法”?只有线程可以调用任何方法。或者,EJP试图告诉您的是线程是执行代码的。程序执行的每个语句(包括每个方法调用)都发生在某个线程中。当程序第一次启动时,它的
main()
例程在主线程中被调用,这并不比任何其他线程更特殊。
public String call() throws Exception {
        //invoke tool static method
    JSONObject jsonObject = JSONParserUtil.getJson(filePath);
    JSONObject childNode = JSONParserUtil.getChildNode(jsonObject, nodeName, conditions);
    return childNode.toString();
}