首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可调用的JavaFX任务

可调用的JavaFX任务
EN

Stack Overflow用户
提问于 2018-08-14 05:01:35
回答 1查看 987关注 0票数 1

我正在开发一个JavaFX应用程序,并且在一个ExecutorService submit方法中提供JavaFX任务。此外,我还试图在Future对象中的提交返回值中获取Task的返回值。然后,我发现ExecutorService只在提交Callable对象时返回值,而且JavaFX任务尽管有call方法,但仍然是可运行的。那么有没有解决这个问题的办法呢?

我试着用这种方式解决了我的问题,但当我不想写自己的类时,我愿意接受建议。

我的主要方法:

代码语言:javascript
运行
复制
public static void main(String[] args) throws InterruptedException, ExecutionException {
    ExecutorService executorService = Executors.newSingleThreadExecutor();
    Semaphore semaphore = new Semaphore(1);
    List<Integer> list = IntStream.range(0,100).boxed().collect(Collectors.toList());
    Iterator<Integer> iterator = list.iterator();
    while (iterator.hasNext()){
        List<Integer> sendingList = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            sendingList.add(iterator.next());
        }
        System.out.println("SUBMITTING");
        Future<Integer> future = executorService.submit((Callable<Integer>) new TestCallable(sendingList,semaphore));
        System.out.println(future.get());
        semaphore.acquire();
    }
    executorService.shutdown();
    System.out.println("COMPLETED");
}

我的TestCallable类:

代码语言:javascript
运行
复制
class TestCallable extends Task<Integer> implements Callable<Integer> {

   private Random random = new Random();
   private List<Integer> list;
   private Semaphore semaphore;

   TestCallable(List<Integer> list, Semaphore semaphore) {
       this.list = list;
       this.semaphore = semaphore;
   }

   @Override
   public Integer call(){
       System.out.println("SENDING");
       System.out.println(list);
       try {
           Thread.sleep(1000+random.nextInt(500));
       } catch (InterruptedException e) {
           e.printStackTrace();
       }
       System.out.println("RECEIVED");
       semaphore.release();
       return list.size();
   }
}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51830500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档