Java 使用多个线程是不好的做法吗?(通过SwingWorkers)
当我的Java(Swing)应用程序需要(例如)从Internet下载数据并同时执行某些操作时,它会创建一个新的SwingWorker对象(假设显示加载程序)。但是,通过监视创建的线程,可以很快达到约100个线程Java 使用多个线程是不好的做法吗?(通过SwingWorkers),java,multithreading,swing,garbage-collection,swingworker,Java,Multithreading,Swing,Garbage Collection,Swingworker,当我的Java(Swing)应用程序需要(例如)从Internet下载数据并同时执行某些操作时,它会创建一个新的SwingWorker对象(假设显示加载程序)。但是,通过监视创建的线程,可以很快达到约100个线程 这是坏习惯吗?若有,;正确的方法是什么?GC不会自动清理未使用的线程吗?是的,当您对线程数(或通常是资源数)没有设置上限时,这是一种不好的做法 在这种情况下,最好使用最多包含特定数量的线程(例如25个)的。您可以在启动时全部创建它们,也可以根据需要懒洋洋地创建它们 为池实现一个简单的请
这是坏习惯吗?若有,;正确的方法是什么?GC不会自动清理未使用的线程吗?是的,当您对线程数(或通常是资源数)没有设置上限时,这是一种不好的做法 在这种情况下,最好使用最多包含特定数量的线程(例如25个)的。您可以在启动时全部创建它们,也可以根据需要懒洋洋地创建它们 为池实现一个简单的请求管理器系统,该系统向请求者提供资源(或者在资源耗尽的情况下,对资源进行排队,或者干脆拒绝资源)
这样,最终清理它们也将变得简单而明显。这是Java Swing应用程序中的吗?所有100个线程都在做些什么吗?@thatidiotguy是的,一个Java Swing应用程序。他们一直在做一些事情,但他们都完成得相当快(大约10秒)。线程的数量随着时间的推移和用户使用应用程序而增加。“GC不会自动清理未使用的线程吗?”如果它们干净地终止…@MarcoForberg您愿意详细说明一下吗?@Zar他说,不要期望一个线程在(1){}时被GC清理