Future Callable 处理子线程无效

由于要获取线程中的返回值,所以将new thread (() - > {}) 里面的代码想用future来写。

        但是改完之后,调用方法之后,整个页面直接卡住,难道future不应该是另起一个线程吗?

求助。

同样的执行代码,我放在new thread()里面就是能正常调用。而且也不会影响页面的其他功能

代码如下:

private ExecutorService executorService = WorkThreadPoolConstants.WORK_POOL_INSTANCE;

@Transactional
    public String rebuildAccountSet() {

        if(isrebuildAccountSet == true) {
            log.info("正在执行重建任务,忽略本次请求");
            return "提示1";
        }

        synchronized(this) {
            if(isrebuildAccountSet == true)
                return "提示2 " ;

            isrebuildAccountSet = true;

            Task task = new Task();
            FutureTask<String> futureTask = new FutureTask<String>(task);
            executorService.submit(futureTask);

            //让子线程飞一会
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e1) {
                e1.printStackTrace();
            }

            try {
                return (String) futureTask.get();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
        }
        return "";  
    }

    class Task implements Callable<String>{
        @Override
        public String call() throws Exception {

            //很耗时,大约30分钟左右的执行时间,频繁的写入数据到数据库
                //调用到了内部的方法
        }
    }

futureTask.get()是会阻塞的啊。。。
这个方法点进源码去看。。
如果任务未完成会调用
awaitDone(false, 0L) 一直阻塞;