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 使用多个线程是不好的做法吗?(通过SwingWorkers)_Java_Multithreading_Swing_Garbage Collection_Swingworker - Fatal编程技术网

Java 使用多个线程是不好的做法吗?(通过SwingWorkers)

Java 使用多个线程是不好的做法吗?(通过SwingWorkers),java,multithreading,swing,garbage-collection,swingworker,Java,Multithreading,Swing,Garbage Collection,Swingworker,当我的Java(Swing)应用程序需要(例如)从Internet下载数据并同时执行某些操作时,它会创建一个新的SwingWorker对象(假设显示加载程序)。但是,通过监视创建的线程,可以很快达到约100个线程 这是坏习惯吗?若有,;正确的方法是什么?GC不会自动清理未使用的线程吗?是的,当您对线程数(或通常是资源数)没有设置上限时,这是一种不好的做法 在这种情况下,最好使用最多包含特定数量的线程(例如25个)的。您可以在启动时全部创建它们,也可以根据需要懒洋洋地创建它们 为池实现一个简单的请

当我的Java(Swing)应用程序需要(例如)从Internet下载数据并同时执行某些操作时,它会创建一个新的SwingWorker对象(假设显示加载程序)。但是,通过监视创建的线程,可以很快达到约100个线程


这是坏习惯吗?若有,;正确的方法是什么?GC不会自动清理未使用的线程吗?

是的,当您对线程数(或通常是资源数)没有设置上限时,这是一种不好的做法

在这种情况下,最好使用最多包含特定数量的线程(例如25个)的。您可以在启动时全部创建它们,也可以根据需要懒洋洋地创建它们

为池实现一个简单的请求管理器系统,该系统向请求者提供资源(或者在资源耗尽的情况下,对资源进行排队,或者干脆拒绝资源)


这样,最终清理它们也将变得简单而明显。

这是Java Swing应用程序中的吗?所有100个线程都在做些什么吗?@thatidiotguy是的,一个Java Swing应用程序。他们一直在做一些事情,但他们都完成得相当快(大约10秒)。线程的数量随着时间的推移和用户使用应用程序而增加。“GC不会自动清理未使用的线程吗?”如果它们干净地终止…@MarcoForberg您愿意详细说明一下吗?@Zar他说,不要期望一个线程在(1){}时被GC清理