那为什么FutureTask<Integer> fu=new FutureTask<Integer>(ca);换成Future fu就会报错
时间: 2024-04-04 14:31:08 浏览: 16
在Java中,泛型是Java 5之后引入的一个特性,它可以让我们在编译时就能够检查类型安全,从而避免类型转换异常等问题。
在这个问题中,FutureTask是一个泛型类,它的构造函数需要传递一个Callable对象,所以声明FutureTask对象时,需要指定泛型类型,例如FutureTask<Integer> fu = new FutureTask<Integer>(ca)。
如果你将其改为Future fu = new FutureTask(ca),那么编译器就无法确定FutureTask的泛型类型是什么,因此会报错。
因此,如果你不确定FutureTask需要的泛型类型是什么,可以使用通配符类型 FutureTask<?> fu = new FutureTask<>(ca)。这样就可以不指定具体的泛型类型,但是也不能在后面的代码中使用泛型中的具体类型。
相关问题
那为什么FutureTask<Integer> fu=new FutureTask<Integer>(ca);换成Future<Interger> fu就会报错
在Java中,泛型是Java 5之后引入的一个特性,它可以让我们在编译时就能够检查类型安全,从而避免类型转换异常等问题。
在这个问题中,FutureTask是一个泛型类,它的泛型类型是指它的返回值类型,如果你将其改为Future<Integer> fu = new FutureTask<>(ca),编译器会认为你声明的是一个返回值类型为Integer的Future对象,但是实际上你创建的是一个FutureTask对象,两者的类型不匹配,因此会报错。
如果你想要使用Future接口来引用FutureTask对象,可以将其声明为 FutureTask<Integer> fu = new FutureTask<>(ca),这样就可以通过FutureTask实现Future接口的功能,同时保留了泛型类型的正确性。
ExecutorService es = Executors.newFixedThreadPool(list.size0 > 1 ? list.size0 / 2: 1); List <Future> listFuture = new ArrayList < > 0; for (String dbname: list) ( Future<Map String, Object> > futureTask = es.submit(new ThreadByCallable(systemRegisterInfos, dbname)) listFuture.add(futureTask);
这段代码是使用Java的ExecutorService和Future来实现多线程任务的执行和结果获取。首先,通过Executors类的newFixedThreadPool方法创建一个固定大小的线程池,线程池的大小根据list的大小来确定,如果list.size()大于1则为list.size()/2,否则为1。然后,创建一个List来保存每个任务的Future对象。接下来,使用for循环遍历list中的每个元素,对于每个元素,创建一个ThreadByCallable对象并通过es.submit方法提交给线程池执行,并将返回的Future对象添加到listFuture中。最终,listFuture中保存了所有任务的Future对象,可以通过这些对象获取各个任务的执行结果。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)