Java 停止线程或让它运行

Java 停止线程或让它运行,java,multithreading,interrupt,Java,Multithreading,Interrupt,我有一个简单的问题,在Java中,是让线程在使用完后继续运行更好,还是尝试.interrupt()线程更好 我的想法是这样的:假设我通过一个循环创建线程,这样我可以让100个线程都执行一个单独的进程,而不中断GUI(在主线程上),然后该进程在所有线程上完成。我是停止线程,还是让它们继续打开,即使它们在技术上没有做任何事情 我的猜测是最好杀死线程,这样它们就不会从程序的其余部分获取任何资源。有什么想法吗?当一个线程有“finish processing”(完成处理),即退出run方法时,该线程将自

我有一个简单的问题,在Java中,是让线程在使用完后继续运行更好,还是尝试
.interrupt()
线程更好

我的想法是这样的:假设我通过一个循环创建线程,这样我可以让100个线程都执行一个单独的进程,而不中断GUI(在主线程上),然后该进程在所有线程上完成。我是停止线程,还是让它们继续打开,即使它们在技术上没有做任何事情


我的猜测是最好杀死线程,这样它们就不会从程序的其余部分获取任何资源。有什么想法吗?

当一个线程有“finish processing”(完成处理),即退出run方法时,该线程将自行终止,无需中断。

您在做什么?请分享你的代码。一般来说,如果你有一个任务要服从于一个线程,它应该有一个清晰的开始和结束。当线程的执行通过
run
方法时,它将自行结束。只要确保你的线程在做了任何事情之后都能干净地离开
run
方法,你就会成为黄金。这更像是一个关于编程的讨论问题。所以它没有一个具体的例子。但是这里有一个可能的伪代码:创建一个可运行的,将代码放在它的旁边,从可运行的thread.start()创建一个新线程;。100条线?我希望不是!您最好使用实例和。但是如果我使用FutureTask,它是否在您指定的时间在同一个线程上处理所有内容?那么这是Java“垃圾收集器”特有的功能,还是适用于其他语言,如Obj C、C#,等等……它实际上与垃圾收集没有什么关系——垃圾收集通过检测未使用的对象来释放内存,而上面的行为更多地与JVM线程模型有关。大多数语言都以类似的模式实现多线程,您可以提供要运行的代码(Java中的Runnable),语言库负责与操作系统一起分配线程、运行提供的代码和清理。感谢您的回复。这是一个非常有趣的讨论。如果这是java的线程模型,为什么有线程?Sth()和线程?中断()方法。让我们考虑一个例子:假设线程从套接字读取,并且它阻塞直到收到命令。您的GUI通过另一个线程更新,假设用户取消了操作。您的GUI线程现在想要终止该线程,即使它尚未完成其处理(注意:这是本例与您的示例的区别)。为了允许线程干净地终止并清理其资源,主线程应该调用中断方法(stop已被折旧),线程应该检查并查看它是否已被中断并清理。