Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在我的案例中使用线程池_Java_Multithreading_Swing - Fatal编程技术网

Java 在我的案例中使用线程池

Java 在我的案例中使用线程池,java,multithreading,swing,Java,Multithreading,Swing,我想在jpanel上画圆圈,每个圆圈应该以不同的颜色交替出现在随机位置上,例如2000ms后,它消失,然后出现一个新的圆圈 但是,我想使用一个有3个线程的线程池,这样我就可以同时显示3个圆 因此,现在我不确定如何执行CircleRunnable类并使该圆圈显示在屏幕上?不,不应该为此使用多个线程。正如Swing的事件/绘制线程所证明的那样,图形并不是一般的多线程 相反,您应该在一个合适的集合中跟踪循环及其生命周期,并在一个线程中处理它。例如,创建javax.swing.Timer并在每个刻度上随

我想在jpanel上画圆圈,每个圆圈应该以不同的颜色交替出现在随机位置上,例如2000ms后,它消失,然后出现一个新的圆圈

但是,我想使用一个有3个线程的线程池,这样我就可以同时显示3个圆


因此,现在我不确定如何执行CircleRunnable类并使该圆圈显示在屏幕上?

不,不应该为此使用多个线程。正如Swing的事件/绘制线程所证明的那样,图形并不是一般的多线程

相反,您应该在一个合适的集合中跟踪循环及其生命周期,并在一个线程中处理它。例如,创建javax.swing.Timer并在每个刻度上随机生成圆圈


这样你就可以有数百个圆圈,而且你不会在Swing程序中使用多线程攻击自己。

@Xerath-了解并发和线程的第一件事是什么时候不使用它。你想做什么和应该做什么不一致,这是现在要学的第一课,您的代码将绘制任意数量的圆,因为它将绘制circleList中包含的所有圆,并且您的代码根本没有任何生命周期管理。因此,您正在询问,一旦开始创建一些圆,如何使用更多线程来实现绘制更少的圆。这没有任何意义。