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 我应该使用什么类来扩展SwingWorker?_Java_Multithreading_Swing_Swingworker - Fatal编程技术网

Java 我应该使用什么类来扩展SwingWorker?

Java 我应该使用什么类来扩展SwingWorker?,java,multithreading,swing,swingworker,Java,Multithreading,Swing,Swingworker,我有一个JavaSwing应用程序。我想将信息上传到一个web端点,这个过程需要足够的时间来证明将工作转移到另一个线程上的合理性。我想使用Swing SwingWorker范例来实现这一点。我不知道应该在哪里扩展SwingWorker 现在,每个web端点都有一个单独的类,该类存储指向该端点的所有数据,以及与端点接口所需的代码(位于名为upload()的方法下)。既然执行任务所需的所有数据都在那里,这些类是否应该实现SwingWorker?或者我应该让一个二级类FooWorker实现SwingW

我有一个JavaSwing应用程序。我想将信息上传到一个web端点,这个过程需要足够的时间来证明将工作转移到另一个线程上的合理性。我想使用Swing SwingWorker范例来实现这一点。我不知道应该在哪里扩展SwingWorker

现在,每个web端点都有一个单独的类,该类存储指向该端点的所有数据,以及与端点接口所需的代码(位于名为upload()的方法下)。既然执行任务所需的所有数据都在那里,这些类是否应该实现SwingWorker?或者我应该让一个二级类FooWorker实现SwingWorker,它将调用内部站点对象的Upload()

如果我创建了一个二级FooWorker类,那么似乎我必须费事将对站点的引用填充到我实例化的每个FooWorker对象中(每个web端点一个线程/工作者),但是站点不会被一堆SwingWorker方法和代码污染

如果我用Site类扩展SwingWorker,那么我可以直接从EDT为每个站点调用.execute(),这比为每个站点创建一个worker,然后让该worker调用upload()离开站点要干净得多


只是寻找关于哪种方法更好的意见和想法。Site类已经相当复杂了,如果我扩展SwingWorker类的话,我担心会把一堆与域无关的东西放进去。但是如果我这样做的话,FooWorker类基本上只是Site类的一个薄包装器。这个包装器值得让站点类只关注自己的域方法/数据吗?

在有意义的地方引入抽象总是一个好主意。在这种情况下,我认为这是有意义的,因为您可能最终创建了几个SwingWorker类

<>你可以考虑创建一个叫做SiteWorker的单一SWIFANER类。然后,我将创建实现方法upload()的站点接口。表示到站点端点的连接的每个类都将实现此站点接口。然后,您可以让SiteWorker处理站点接口,而不必处理实现SwingWorker的各种站点类

记住,编程是为了接口,而不是实现。如果您只需要创建一个SiteWorker,然后专注于各种站点实现,那么您的生活就会变得更轻松

因此,您可以将站点实例(可以是实现站点的任何类)作为参数传递给SiteWorker类,然后SiteWorker类在其doInBackground()方法中只调用实现站点的实例的upload()方法