Java 以不断变化的线程数并发重复同一任务

Java 以不断变化的线程数并发重复同一任务,java,multithreading,performance,concurrency,scheduledexecutorservice,Java,Multithreading,Performance,Concurrency,Scheduledexecutorservice,我有一个JavaFXGUI中的图形,我想要动画 您可能知道,您不能在主线程之外更改JavaFXGUI,因此要模拟动画,您必须创建一个辅助线程,然后将可运行程序提供给主线程 现在,我的目标是在同一时间异步设置图形不同部分的动画,同时能够更改一次动画的数量以及延迟。我在GUI中添加了相应的滑块 我通过创建一个“ThreadSpawner”解决了这个问题,它反过来创建了n个线程(这些线程在完成一次任务后死亡) Task spawner=新任务(){ @凌驾 public Void call()引发In

我有一个JavaFXGUI中的图形,我想要动画

您可能知道,您不能在主线程之外更改JavaFXGUI,因此要模拟动画,您必须创建一个辅助线程,然后将可运行程序提供给主线程

现在,我的目标是在同一时间异步设置图形不同部分的动画,同时能够更改一次动画的数量以及延迟。我在GUI中添加了相应的滑块

我通过创建一个“ThreadSpawner”解决了这个问题,它反过来创建了n个线程(这些线程在完成一次任务后死亡)

Task spawner=新任务(){
@凌驾
public Void call()引发InterruptedException{
而(){
对于(int n=0;n
但是,我既不喜欢它的外观,也不太喜欢它的性能

我也研究了和,但他们不喜欢动态更改线程数量或延迟的想法

什么会更快?什么会更好?还有其他我没想到的方法吗?
对于这样一个“基本”任务,我的解决方案似乎太复杂了。

因此,对于更改线程数,有一个名为的方法,它将允许您更改线程数。(注意:这不在界面中!)


至于更改频率,最好的方法是在将来从第一个调度程序接收到的时候调用
cancel
,然后使用新的频率再次添加。

因此,要更改线程数,有一个调用的方法,允许您更改线程数。(注意:这不在界面中!)


至于更改频率,最好的办法是在将来从第一个调度程序接收到的任务上调用
cancel
,然后使用新的频率再次添加。

没有办法在执行器中填充尽可能多的任务,是吗?我想我会将睡眠转移到任务中,以避免所有的取消和提交。除此之外,setCorePoolSize帮助很大。应该看看继承的方法。谢谢没有办法在执行器中填充尽可能多的任务和最大可能多的线程,是吗?我想我会将睡眠转移到任务中,以避免所有的取消和提交。除此之外,setCorePoolSize帮助很大。应该看看继承的方法。谢谢
    Task<Void> spawner = new Task<Void>() {
        @Override
        public Void call() throws InterruptedException {

            while () {
                for (int n = 0; n < amount; n++) {
                    Thread th = new Thread(task);
                    th.setDaemon(true);
                    th.start();
                }
                Thread.sleep(delay);
            }

            return null;
        }
    };

    Thread th = new Thread(spawner);
    th.setDaemon(true);
    th.start();