java.util.concurrent.Callable

本文详细介绍了Java并发编程中Callable接口与Future/FutureTask类的使用方法。对比了Callable与Runnable接口的区别,阐述了如何利用Future/FutureTask获取线程任务的返回值。

1. java.util.concurrent.Callable

1.1 概述

Callable是一个返回一个结果或者抛出一个异常的任务接口,其中定义了一个call()方法用来实现具体的任务逻辑。
Callable接口与Runnable接口相似,两者都是为了实现另外一个线程实例而设计的。

1.1.1 与Runnable接口的不同之处

  • Runnable接口无法返回具体任务的结果,Callable接口可以返回具体任务的结果。因此,Callable可以处理较为复杂的场景。
  • 发生异常时,Runnable不会抛出异常,Callable接口会抛出异常
  • Runnable可以通过调用start()方法来启用线程,Callable接口则需要配合线程池的submit()方法来启动

1.2 Callable API设计

如图:
这里写图片描述
call()方法是用来处理具体的业务场景,并将处理结果返回去。如果出现异常,则抛出来。

1.3 获取Callable接口call()方法返回值方式

1.3.1 采用Future方式获取

1.3.1.1 Future概述

Future是用来获取异步计算的结果的。Future提供了一些方法来获取和操作执行具体任务的过程状态。

1.3.1.2 Future API设计

这里写图片描述

  • boolean cancel(boolean mayInterruptIfRunning)
    试图取消正在执行的任务。mayInterruptIfRunning表示当前线程如果需要被中断时设置为true,否则,按照线程正常执行,直到完成
  • boolean isCancelled()
    如果当前线程在正常完成之前被取消的话返回true
  • boolean isDone()
    当前任务完成时返回true。完成指当前任务在被正常终止、异常、取消等所有的这些情况下均返回true.
  • V get()
    如果必要的话,等待当前任务执行的结果,并返回。这个方法会造成线程阻塞
  • V get(long timeout, TimeUnit unit) throws InterruptedException,ExecutionException, TimeoutException

如果必要的话,在给定的时间内等待当前任务的执行结果,如果有结果,就返回。

1.3.2 采用FutureTask方式获取

1.3.2.1 FutureTask 概述

FutureTask这个类提供了一个基于Future接口的实现,可以使用方法来开始或者取消一个计算(任务),查看计算是否已经完成,并取回计算的结果。计算结果仅可以在计算完成时被取到,如果计算还没有完成那么使用get方法将会被阻塞。一旦计算已经完成,那么计算不能重新开始或者取消。除非计算采用的是runAndReset()方法来使用的。
FutureTask 可以用来包装Runnable对象和Callable对象,一个FutureTask对象可以提交到线程池中去执行。

1.3.2.2 FutureTask API 设计

这里写图片描述
通过上UML图可以看出,FutureTask这个类RunnableFuture这个接口实现Future接口和Runnable接口,并提供了两个构造器来包装Runnable对象和Callable对象

1.4 代码示例:

示例中包括Future方式和FutureTask方式

public class CallableFutureDemo {

    public static void main(String[] args) throws ExecutionException, InterruptedException {

        // 声明一个线程对象
        ExecutorService executorService = Executors.newSingleThreadExecutor();
        Task task = new Task(); // Callable对象
        Object obj = null; // 用于接收callable接口call方法的返回值

        /**
         * Callable + Future 实现获取线程任务的返回值
         */
        Future future = executorService.submit(task);
        try {
            obj = future.get();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
        System.out.println("Callable + Future 实现获取线程任务的返回值;" + obj);

        /**
         * 通过FutureTask获取线程任务的返回值
         */
        FutureTask futureTask = new FutureTask(task);
        executorService.submit(futureTask);
        obj = futureTask.get();
        System.out.println("通过FutureTask获取线程任务的返回值: " + obj);

        // 关闭线程池
        executorService.shutdown();

    }

    /**
     * 新建Task类并实现Callable接口,重写call()方法。
     */
    static class Task implements Callable {
        @Override
        public Object call() throws Exception {
            System.out.println("进入子线程。。。。。。。。");
            /**
             * 简单的计算,将计算结果返回
             */
            int count = 0;
            int length = new Random().nextInt(10);
            System.out.println("共循环" + length + "次");
            for (int i = 0 ; i < length ; i ++) {
                count += i;
                System.out.println("count第" + (i + 1) + "次运算的值:" + count);
            }
            return count;
        }
    }

}

参考链接:https://docs.oracle.com/javase/8/docs/api/
http://blog.youkuaiyun.com/javazejian/article/details/50896505
http://blog.youkuaiyun.com/zhoushumin157016/article/details/51995818
http://www.cnblogs.com/MOBIN/p/6185387.html

源代码链接:https://github.com/myNameIssls/javase-study/blob/master/javase-multithreading/src/main/java/cn/tyrone/javase/concurrent/CallableFutureDemo.java

2025-10-27 09:31:25.822 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.219] Config resolver is com.huawei.foundation.commons.props.SystemEnvConfigResolver@2fc40856; com.huawei.cube.core.env.CubeEnvConfigResolver@5543d800; com.huawei.foundation.commons.config.DefaultConfigResolver@1e033801 2025-10-27 09:31:25.882 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.42] Control param factory is not exist, and use default control param factory 2025-10-27 09:31:27.234 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationLoader.85] foundation component configuration is load for profiles [sit] 2025-10-27 09:31:27.261 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationUtils.55] All config item list [foundation-application, foundation-bootstrap, foundation, cube-app, hae-config, cube-rt-sgov, cube-rt-sso, commons-ops, console, cube-rt-web, cube-rt-security, cube-rt-cs, cube-rt-privilege, cube-privilege-program, cube-rt-http, cube-rt-discovery, cube-rt-health, cube-rt-mqs, cube-das, cube-asynctask, cube-excel, commons-boot] 2025-10-27 09:31:27.645 [main] ERROR [][com.huawei.foundation.commons.thread.ThreadUtils.94] fail to init ThreadUtils java.lang.reflect.InaccessibleObjectException: Unable to make field private java.util.concurrent.Callable java.util.concurrent.FutureTask.callable accessible: module java.base does not "opens java.util.concurrent" to unnamed module @2ac3d530 at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:391) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:367) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:315) at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:183) at java.base/java.lang.reflect.Field.setAccessible(Field.java:177) at org.springframework.util.ReflectionUtils.makeAccessible(ReflectionUtils.java:803) at com.huawei.foundation.commons.thread.ThreadUtils.<clinit>(ThreadUtils.java:88) at com.huawei.foundation.commons.tracing.reporting.IncidentTracingReporter.<clinit>(IncidentTracingReporter.java:40) at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method) at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1160) at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.ensureClassInitialized(MethodHandleAccessorFactory.java:300) at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newConstructorAccessor(MethodHandleAccessorFactory.java:103) at java.base/jdk.internal.reflect.ReflectionFactory.newConstructorAccessor(ReflectionFactory.java:200) at java.base/java.lang.reflect.Constructor.acquireConstructorAccessor(Constructor.java:549) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:789) at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:729) at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1403) at com.huawei.foundation.commons.reporting.ReporterFactory.findReporter(ReporterFactory.java:30) at com.huawei.foundation.commons.incident.IncidentReporterFactory.init(IncidentReporterFactory.java:30) at com.huawei.foundation.commons.incident.Incident.init(Incident.java:144) at com.huawei.foundation.commons.tracing.AgentDynamicInjectInitializer.initialize(AgentDynamicInjectInitializer.java:34) at org.springframework.boot.SpringApplication.lambda$createBootstrapContext$1(SpringApplication.java:343) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at org.springframework.boot.SpringApplication.createBootstrapContext(SpringApplication.java:343) at org.springframework.boot.SpringApplication.run(SpringApplication.java:306) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) at com.huawei.cbgit.tree.MainApplication.main(MainApplication.java:34) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40) 2025-10-27 09:31:27.683 [ExpiredBeanManager] WARN [][com.huawei.foundation.commons.beans.BeanMgntFactory.60] error in clean task, and exit! 2025-10-27 09:31:35.980 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.219] Config resolver is com.huawei.foundation.commons.props.SystemEnvConfigResolver@4a10c019; com.huawei.cube.core.env.CubeEnvConfigResolver@37f627d0; com.huawei.foundation.commons.config.DefaultConfigResolver@2a7392a3 2025-10-27 09:31:36.043 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.42] Control param factory is not exist, and use default control param factory 2025-10-27 09:31:37.278 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationLoader.85] foundation component configuration is load for profiles [sit] 2025-10-27 09:31:37.314 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationUtils.55] All config item list [foundation-application, foundation-bootstrap, foundation, cube-app, hae-config, cube-rt-sgov, cube-rt-sso, commons-ops, console, cube-rt-web, cube-rt-security, cube-rt-cs, cube-rt-privilege, cube-privilege-program, cube-rt-http, cube-rt-discovery, cube-rt-health, cube-rt-mqs, cube-das, cube-asynctask, cube-excel, commons-boot] 2025-10-27 09:31:37.667 [main] ERROR [][com.huawei.foundation.commons.thread.ThreadUtils.94] fail to init ThreadUtils java.lang.reflect.InaccessibleObjectException: Unable to make field private java.util.concurrent.Callable java.util.concurrent.FutureTask.callable accessible: module java.base does not "opens java.util.concurrent" to unnamed module @7b8fcdf2 at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:391) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:367) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:315) at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:183) at java.base/java.lang.reflect.Field.setAccessible(Field.java:177) at org.springframework.util.ReflectionUtils.makeAccessible(ReflectionUtils.java:803) at com.huawei.foundation.commons.thread.ThreadUtils.<clinit>(ThreadUtils.java:88) at com.huawei.foundation.commons.tracing.reporting.IncidentTracingReporter.<clinit>(IncidentTracingReporter.java:40) at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method) at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1160) at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.ensureClassInitialized(MethodHandleAccessorFactory.java:300) at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newConstructorAccessor(MethodHandleAccessorFactory.java:103) at java.base/jdk.internal.reflect.ReflectionFactory.newConstructorAccessor(ReflectionFactory.java:200) at java.base/java.lang.reflect.Constructor.acquireConstructorAccessor(Constructor.java:549) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:789) at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:729) at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1403) at com.huawei.foundation.commons.reporting.ReporterFactory.findReporter(ReporterFactory.java:30) at com.huawei.foundation.commons.incident.IncidentReporterFactory.init(IncidentReporterFactory.java:30) at com.huawei.foundation.commons.incident.Incident.init(Incident.java:144) at com.huawei.foundation.commons.tracing.AgentDynamicInjectInitializer.initialize(AgentDynamicInjectInitializer.java:34) at org.springframework.boot.SpringApplication.lambda$createBootstrapContext$1(SpringApplication.java:343) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at org.springframework.boot.SpringApplication.createBootstrapContext(SpringApplication.java:343) at org.springframework.boot.SpringApplication.run(SpringApplication.java:306) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) at com.huawei.cbgit.tree.MainApplication.main(MainApplication.java:34) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40) 2025-10-27 09:31:45.940 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.219] Config resolver is com.huawei.foundation.commons.props.SystemEnvConfigResolver@4bcf08ae; com.huawei.cube.core.env.CubeEnvConfigResolver@626b9092; com.huawei.foundation.commons.config.DefaultConfigResolver@1ac2829e 2025-10-27 09:31:46.011 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.42] Control param factory is not exist, and use default control param factory 2025-10-27 09:31:47.280 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationLoader.85] foundation component configuration is load for profiles [sit] 2025-10-27 09:31:47.326 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationUtils.55] All config item list [foundation-application, foundation-bootstrap, foundation, cube-app, hae-config, cube-rt-sgov, cube-rt-sso, commons-ops, console, cube-rt-web, cube-rt-security, cube-rt-cs, cube-rt-privilege, cube-privilege-program, cube-rt-http, cube-rt-discovery, cube-rt-health, cube-rt-mqs, cube-das, cube-asynctask, cube-excel, commons-boot] 2025-10-27 09:31:47.678 [main] ERROR [][com.huawei.foundation.commons.thread.ThreadUtils.94] fail to init ThreadUtils java.lang.reflect.InaccessibleObjectException: Unable to make field private java.util.concurrent.Callable java.util.concurrent.FutureTask.callable accessible: module java.base does not "opens java.util.concurrent" to unnamed module @1ef04613 at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:391) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:367) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:315) at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:183) at java.base/java.lang.reflect.Field.setAccessible(Field.java:177) at org.springframework.util.ReflectionUtils.makeAccessible(ReflectionUtils.java:803) at com.huawei.foundation.commons.thread.ThreadUtils.<clinit>(ThreadUtils.java:88) at com.huawei.foundation.commons.tracing.reporting.IncidentTracingReporter.<clinit>(IncidentTracingReporter.java:40) at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method) at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1160) at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.ensureClassInitialized(MethodHandleAccessorFactory.java:300) at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newConstructorAccessor(MethodHandleAccessorFactory.java:103) at java.base/jdk.internal.reflect.ReflectionFactory.newConstructorAccessor(ReflectionFactory.java:200) at java.base/java.lang.reflect.Constructor.acquireConstructorAccessor(Constructor.java:549) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:789) at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:729) at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1403) at com.huawei.foundation.commons.reporting.ReporterFactory.findReporter(ReporterFactory.java:30) at com.huawei.foundation.commons.incident.IncidentReporterFactory.init(IncidentReporterFactory.java:30) at com.huawei.foundation.commons.incident.Incident.init(Incident.java:144) at com.huawei.foundation.commons.tracing.AgentDynamicInjectInitializer.initialize(AgentDynamicInjectInitializer.java:34) at org.springframework.boot.SpringApplication.lambda$createBootstrapContext$1(SpringApplication.java:343) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at org.springframework.boot.SpringApplication.createBootstrapContext(SpringApplication.java:343) at org.springframework.boot.SpringApplication.run(SpringApplication.java:306) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) at com.huawei.cbgit.tree.MainApplication.main(MainApplication.java:34) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40) 2025-10-27 09:31:57.926 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.219] Config resolver is com.huawei.foundation.commons.props.SystemEnvConfigResolver@2184962c; com.huawei.cube.core.env.CubeEnvConfigResolver@4d9bccfe; com.huawei.foundation.commons.config.DefaultConfigResolver@412440c1 2025-10-27 09:31:57.981 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.42] Control param factory is not exist, and use default control param factory 2025-10-27 09:31:59.414 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationLoader.85] foundation component configuration is load for profiles [sit] 2025-10-27 09:31:59.440 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationUtils.55] All config item list [foundation-application, foundation-bootstrap, foundation, cube-app, hae-config, cube-rt-sgov, cube-rt-sso, commons-ops, console, cube-rt-web, cube-rt-security, cube-rt-cs, cube-rt-privilege, cube-privilege-program, cube-rt-http, cube-rt-discovery, cube-rt-health, cube-rt-mqs, cube-das, cube-asynctask, cube-excel, commons-boot] 2025-10-27 09:31:59.820 [main] ERROR [][com.huawei.foundation.commons.thread.ThreadUtils.94] fail to init ThreadUtils java.lang.reflect.InaccessibleObjectException: Unable to make field private java.util.concurrent.Callable java.util.concurrent.FutureTask.callable accessible: module java.base does not "opens java.util.concurrent" to unnamed module @2bd7f686 at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:391) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:367) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:315) at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:183) at java.base/java.lang.reflect.Field.setAccessible(Field.java:177) at org.springframework.util.ReflectionUtils.makeAccessible(ReflectionUtils.java:803) at com.huawei.foundation.commons.thread.ThreadUtils.<clinit>(ThreadUtils.java:88) at com.huawei.foundation.commons.tracing.reporting.IncidentTracingReporter.<clinit>(IncidentTracingReporter.java:40) at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method) at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1160) at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.ensureClassInitialized(MethodHandleAccessorFactory.java:300) at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newConstructorAccessor(MethodHandleAccessorFactory.java:103) at java.base/jdk.internal.reflect.ReflectionFactory.newConstructorAccessor(ReflectionFactory.java:200) at java.base/java.lang.reflect.Constructor.acquireConstructorAccessor(Constructor.java:549) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:789) at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:729) at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1403) at com.huawei.foundation.commons.reporting.ReporterFactory.findReporter(ReporterFactory.java:30) at com.huawei.foundation.commons.incident.IncidentReporterFactory.init(IncidentReporterFactory.java:30) at com.huawei.foundation.commons.incident.Incident.init(Incident.java:144) at com.huawei.foundation.commons.tracing.AgentDynamicInjectInitializer.initialize(AgentDynamicInjectInitializer.java:34) at org.springframework.boot.SpringApplication.lambda$createBootstrapContext$1(SpringApplication.java:343) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at org.springframework.boot.SpringApplication.createBootstrapContext(SpringApplication.java:343) at org.springframework.boot.SpringApplication.run(SpringApplication.java:306) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) at com.huawei.cbgit.tree.MainApplication.main(MainApplication.java:34) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40) 2025-10-27 09:32:10.353 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.219] Config resolver is com.huawei.foundation.commons.props.SystemEnvConfigResolver@1e38e8b6; com.huawei.cube.core.env.CubeEnvConfigResolver@59bbf82e; com.huawei.foundation.commons.config.DefaultConfigResolver@75b3ef1a 2025-10-27 09:32:10.415 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.42] Control param factory is not exist, and use default control param factory 2025-10-27 09:32:11.766 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationLoader.85] foundation component configuration is load for profiles [sit] 2025-10-27 09:32:11.807 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationUtils.55] All config item list [foundation-application, foundation-bootstrap, foundation, cube-app, hae-config, cube-rt-sgov, cube-rt-sso, commons-ops, console, cube-rt-web, cube-rt-security, cube-rt-cs, cube-rt-privilege, cube-privilege-program, cube-rt-http, cube-rt-discovery, cube-rt-health, cube-rt-mqs, cube-das, cube-asynctask, cube-excel, commons-boot] 2025-10-27 09:32:12.188 [main] ERROR [][com.huawei.foundation.commons.thread.ThreadUtils.94] fail to init ThreadUtils java.lang.reflect.InaccessibleObjectException: Unable to make field private java.util.concurrent.Callable java.util.concurrent.FutureTask.callable accessible: module java.base does not "opens java.util.concurrent" to unnamed module @e4ef4c0 at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:391) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:367) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:315) at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:183) at java.base/java.lang.reflect.Field.setAccessible(Field.java:177) at org.springframework.util.ReflectionUtils.makeAccessible(ReflectionUtils.java:803) at com.huawei.foundation.commons.thread.ThreadUtils.<clinit>(ThreadUtils.java:88) at com.huawei.foundation.commons.tracing.reporting.IncidentTracingReporter.<clinit>(IncidentTracingReporter.java:40) at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method) at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1160) at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.ensureClassInitialized(MethodHandleAccessorFactory.java:300) at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newConstructorAccessor(MethodHandleAccessorFactory.java:103) at java.base/jdk.internal.reflect.ReflectionFactory.newConstructorAccessor(ReflectionFactory.java:200) at java.base/java.lang.reflect.Constructor.acquireConstructorAccessor(Constructor.java:549) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:789) at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:729) at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1403) at com.huawei.foundation.commons.reporting.ReporterFactory.findReporter(ReporterFactory.java:30) at com.huawei.foundation.commons.incident.IncidentReporterFactory.init(IncidentReporterFactory.java:30) at com.huawei.foundation.commons.incident.Incident.init(Incident.java:144) at com.huawei.foundation.commons.tracing.AgentDynamicInjectInitializer.initialize(AgentDynamicInjectInitializer.java:34) at org.springframework.boot.SpringApplication.lambda$createBootstrapContext$1(SpringApplication.java:343) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at org.springframework.boot.SpringApplication.createBootstrapContext(SpringApplication.java:343) at org.springframework.boot.SpringApplication.run(SpringApplication.java:306) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) at com.huawei.cbgit.tree.MainApplication.main(MainApplication.java:34) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40) 2025-10-27 09:32:12.225 [ExpiredBeanManager] WARN [][com.huawei.foundation.commons.beans.BeanMgntFactory.60] error in clean task, and exit! 2025-10-27 09:32:24.142 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.219] Config resolver is com.huawei.foundation.commons.props.SystemEnvConfigResolver@862624f; com.huawei.cube.core.env.CubeEnvConfigResolver@3aa8c337; com.huawei.foundation.commons.config.DefaultConfigResolver@78e7b83 2025-10-27 09:32:24.242 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.42] Control param factory is not exist, and use default control param factory 2025-10-27 09:32:25.549 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationLoader.85] foundation component configuration is load for profiles [sit] 2025-10-27 09:32:25.573 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationUtils.55] All config item list [foundation-application, foundation-bootstrap, foundation, cube-app, hae-config, cube-rt-sgov, cube-rt-sso, commons-ops, console, cube-rt-web, cube-rt-security, cube-rt-cs, cube-rt-privilege, cube-privilege-program, cube-rt-http, cube-rt-discovery, cube-rt-health, cube-rt-mqs, cube-das, cube-asynctask, cube-excel, commons-boot] 2025-10-27 09:32:25.981 [main] ERROR [][com.huawei.foundation.commons.thread.ThreadUtils.94] fail to init ThreadUtils java.lang.reflect.InaccessibleObjectException: Unable to make field private java.util.concurrent.Callable java.util.concurrent.FutureTask.callable accessible: module java.base does not "opens java.util.concurrent" to unnamed module @5487a8f1 at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:391) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:367) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:315) at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:183) at java.base/java.lang.reflect.Field.setAccessible(Field.java:177) at org.springframework.util.ReflectionUtils.makeAccessible(ReflectionUtils.java:803) at com.huawei.foundation.commons.thread.ThreadUtils.<clinit>(ThreadUtils.java:88) at com.huawei.foundation.commons.tracing.reporting.IncidentTracingReporter.<clinit>(IncidentTracingReporter.java:40) at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method) at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1160) at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.ensureClassInitialized(MethodHandleAccessorFactory.java:300) at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newConstructorAccessor(MethodHandleAccessorFactory.java:103) at java.base/jdk.internal.reflect.ReflectionFactory.newConstructorAccessor(ReflectionFactory.java:200) at java.base/java.lang.reflect.Constructor.acquireConstructorAccessor(Constructor.java:549) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:789) at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:729) at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1403) at com.huawei.foundation.commons.reporting.ReporterFactory.findReporter(ReporterFactory.java:30) at com.huawei.foundation.commons.incident.IncidentReporterFactory.init(IncidentReporterFactory.java:30) at com.huawei.foundation.commons.incident.Incident.init(Incident.java:144) at com.huawei.foundation.commons.tracing.AgentDynamicInjectInitializer.initialize(AgentDynamicInjectInitializer.java:34) at org.springframework.boot.SpringApplication.lambda$createBootstrapContext$1(SpringApplication.java:343) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at org.springframework.boot.SpringApplication.createBootstrapContext(SpringApplication.java:343) at org.springframework.boot.SpringApplication.run(SpringApplication.java:306) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) at com.huawei.cbgit.tree.MainApplication.main(MainApplication.java:34) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40) 2025-10-27 09:32:26.024 [ExpiredBeanManager] WARN [][com.huawei.foundation.commons.beans.BeanMgntFactory.60] error in clean task, and exit! 2025-10-27 09:32:38.387 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.219] Config resolver is com.huawei.foundation.commons.props.SystemEnvConfigResolver@2184962c; com.huawei.cube.core.env.CubeEnvConfigResolver@4d9bccfe; com.huawei.foundation.commons.config.DefaultConfigResolver@412440c1 2025-10-27 09:32:38.529 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.42] Control param factory is not exist, and use default control param factory 2025-10-27 09:32:39.824 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationLoader.85] foundation component configuration is load for profiles [sit] 2025-10-27 09:32:39.849 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationUtils.55] All config item list [foundation-application, foundation-bootstrap, foundation, cube-app, hae-config, cube-rt-sgov, cube-rt-sso, commons-ops, console, cube-rt-web, cube-rt-security, cube-rt-cs, cube-rt-privilege, cube-privilege-program, cube-rt-http, cube-rt-discovery, cube-rt-health, cube-rt-mqs, cube-das, cube-asynctask, cube-excel, commons-boot] 2025-10-27 09:32:40.211 [main] ERROR [][com.huawei.foundation.commons.thread.ThreadUtils.94] fail to init ThreadUtils java.lang.reflect.InaccessibleObjectException: Unable to make field private java.util.concurrent.Callable java.util.concurrent.FutureTask.callable accessible: module java.base does not "opens java.util.concurrent" to unnamed module @2bd7f686 at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:391) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:367) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:315) at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:183) at java.base/java.lang.reflect.Field.setAccessible(Field.java:177) at org.springframework.util.ReflectionUtils.makeAccessible(ReflectionUtils.java:803) at com.huawei.foundation.commons.thread.ThreadUtils.<clinit>(ThreadUtils.java:88) at com.huawei.foundation.commons.tracing.reporting.IncidentTracingReporter.<clinit>(IncidentTracingReporter.java:40) at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method) at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1160) at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.ensureClassInitialized(MethodHandleAccessorFactory.java:300) at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newConstructorAccessor(MethodHandleAccessorFactory.java:103) at java.base/jdk.internal.reflect.ReflectionFactory.newConstructorAccessor(ReflectionFactory.java:200) at java.base/java.lang.reflect.Constructor.acquireConstructorAccessor(Constructor.java:549) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:789) at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:729) at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1403) at com.huawei.foundation.commons.reporting.ReporterFactory.findReporter(ReporterFactory.java:30) at com.huawei.foundation.commons.incident.IncidentReporterFactory.init(IncidentReporterFactory.java:30) at com.huawei.foundation.commons.incident.Incident.init(Incident.java:144) at com.huawei.foundation.commons.tracing.AgentDynamicInjectInitializer.initialize(AgentDynamicInjectInitializer.java:34) at org.springframework.boot.SpringApplication.lambda$createBootstrapContext$1(SpringApplication.java:343) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at org.springframework.boot.SpringApplication.createBootstrapContext(SpringApplication.java:343) at org.springframework.boot.SpringApplication.run(SpringApplication.java:306) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) at com.huawei.cbgit.tree.MainApplication.main(MainApplication.java:34) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40) 为什么报错
最新发布
10-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值