当前位置: 首页 > 知识库问答 >
问题:

Spring:无法将TaskExecutorImpl类型的值转换为java.util.concurrent.Executor

柳向明
2023-03-14
  <bean id="taskExecutor" class="com.XXX.xxx.management.common.executor.TaskExecutorImpl"
        destroy-method="shutdown">
        <constructor-arg name="threadPoolSize" value="5"/>
        <constructor-arg name="executionQueueCapacity" value="1000"/>
        <constructor-arg name="typeLimit" value="5"/>
    </bean>
    import java.util.AbstractQueue;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Comparator;
    import java.util.Iterator;
    import java.util.List;
    import java.util.TreeSet;
    import java.util.concurrent.BlockingQueue;
    import java.util.concurrent.CancellationException;
    import java.util.concurrent.ConcurrentHashMap;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.FutureTask;
    import java.util.concurrent.RejectedExecutionException;
    import java.util.concurrent.ThreadPoolExecutor;
    import java.util.concurrent.TimeUnit;
    import java.util.concurrent.TimeoutException;
    import java.util.concurrent.atomic.AtomicInteger;
    import java.util.concurrent.locks.Condition;
    import java.util.concurrent.locks.ReentrantLock;

    import javax.annotation.PostConstruct;

    public class TaskExecutorImpl implements TaskExecutor {
        private final int threadPoolSize;
        private final int executionQueueCapacity;
        private final int typeLimit;

        private BlockingPriorityTaskQueue executionQueue;
        private ExecutorService threadPool;

        private ConcurrentHashMap<String, AtomicInteger> executionByTypeMap = new ConcurrentHashMap<>();

        /**
         * Main lock guarding all access
         */
        final ReentrantLock mainLock;
        /**
         * Condition for waiting takes
         */
        private final Condition notEmpty;
        /**
         * Condition for waiting puts
         */
        private final Condition notFull;

        public TaskExecutorImpl(int threadPoolSize, int executionQueueCapacity, int typeLimit) {
            this.threadPoolSize = threadPoolSize;
            this.executionQueueCapacity = executionQueueCapacity;
            this.typeLimit = typeLimit;

            mainLock = new ReentrantLock();
            notEmpty = mainLock.newCondition();
            notFull = mainLock.newCondition();
        }

        @PostConstruct
        @SuppressWarnings("unchecked")
        public void initialize() {
            executionQueue = new BlockingPriorityTaskQueue(executionQueueCapacity);
            threadPool = new ThreadPoolExecutor(threadPoolSize, threadPoolSize, 0L, TimeUnit.MILLISECONDS,
                    (BlockingQueue) executionQueue);

            // create core threads, required for type control
            for (int i = 0; i < threadPoolSize; i++) {
                threadPool.execute(new Runnable() {
                    @Override
                    public void run() {
                        // nothing here
                    }
                });
            }
        } 

and other Methdods implementation so on

当我启动上下文时,我得到以下错误

共有1个答案

戚奇略
2023-03-14

根据堆栈跟踪,TaskExecutorImpl没有实现java.util.concurrent.executor。我们在TaskExecutorImpl类中并没有看到这一点。

它实现了一些taskexecutor,但我们不能说是哪一个,因为没有针对它的导入。那只能说我们这个接口在同一个包里。

因此,请确保您实现了适当的接口以满足依赖注入要求。

 类似资料:
  • 问题内容: 我在SO的某处找到了此字符串扩展名,它使我可以将html代码转换为属性字符串: 在Swift 3中工作正常,但在Swift 4中,Xcode抱怨: 无法将类型“ NSAttributedString.DocumentAttributeKey”的值转换为预期的字典密钥类型“ NSAttributedString.DocumentReadingOptionKey” 我该如何解决? 问题答案

  • 问题内容: 我试图将视图控制器转换为详细视图控制器,但不能。我正在使用Core Data(第一次)。错误发生在prepareForSegue方法中,显示为:“无法将类型’UIViewController’(0x1b81cdc)的值强制转换为’Patternz.PatternDetailViewController’(0x32488)。(lldb)” 希望能解释为什么它不起作用。这是文件。 View

  • 问题内容: 我有一个JSON文件,其中包含2个JSON数组:一个用于路线的数组,一个用于景点的数组。 一条路线应由用户导航到的多个景点组成。不幸的是我遇到了错误: JSONException:无法将类型为java.lang.String的值转换为JSONObject 这是我的变量和解析JSON文件的代码: Log.i(“ JSON Parser”,json); 告诉我在生成的字符串的开头有一个奇怪

  • 问题内容: 我想使用@Value注释注入Double属性,例如: 并使用Spring属性占位符(属性文件): 我得到异常: org.springframework.beans.TypeMismatchException:无法将类型“ java.lang.String”的值转换为所需的类型“ java.lang.Double”;嵌套的异常是java.lang.NumberFormatExceptio

  • 这是控制器代码部分: 我收到这条消息: 出现错误(类型=错误请求,状态=400)。无法将类型[java.lang.String]的值转换为所需类型[java.util.Date];嵌套异常为org.springframework.core.convert.conversionfailedexception:无法将值“Wed Jun 08 00:00:00 WET 2016”从类型[java.lan

  • 我有两个实体,它们使用一个主键互相引用,主键是一个实体的整数。我不确定我做这件事的方式是否正确。 下面是引用主键id为int的实体 下面是我们从上面的实体中将外键设置为Kmichango kandaMchango的实体。 这里是表单的一部分,我在这里提交了用户在jumuiya_michango_form.html中提供的数据 下面是我的控制器中用于链接到表单和发布数据的两个方法 在我提交表单后,我