当线程终止并创建新线程时,线程号(id)递增。 Java 7只是喜欢递增数字还是我做错了什么?
我正在使用Java 7构建一个服务应用程序,它在建立连接时创建一个新线程,然后为连接提供服务。当服务收到关闭消息时,它会退出循环并允许完成线程中的代码。因此,据我所知,线程的生命被终止,就像任何实例对象一样。 Java 7不使用Thread.stop()或Thread.destroy()或任何此类东西。 (我认为不是自v5以来。)
我有一个带有“Open Connection”,“Close Connection”和“Send Message”按钮的界面以及线程中相应的println语句,这样我就可以看到发生了什么。我打印出来的变量之一是Thread.currentThread()。当我打开第一个连接时,currentThread()是Thread [Thread-0,5,main]。我关闭连接并从循环中获取消息,指示Thread [Thread-0,5,main]正在终止。
好的,现在又回到原点了,对吗?没有线程。我再次点击连接,然后输入Thread [Thread-1,5,main]。看到了吗? “Thread-1”而不是“Thread-0”。每次我这样做,数字都会增加1。
(侧面问题,如果不是太麻烦。什么是“5,主要”是什么意思?)
评论re:线程停止:Why are Thread.stop, Thread.suspend and Thread.resume Deprecated?。
答案 0 :(得分:3)
您引用的数字并不代表当前运行的线程数... Thread- “n”只是在您未明确提供名称时使用的自动生成的数字线程。您创建的每个Thread
实例都没有名称,它的n
会增加1.此数字仅用于标识线程实例。
但是,如果您使用线程池,则您提交执行的任务可能会在之前用于其他任务的线程中运行。
此外,这与Java 7没有什么特别之处.Java 6具有完全相同的行为(我怀疑还有以前的版本)。
答案 1 :(得分:2)
主题-0,5,主
0:id
5:优先级
main:name
线程ID为long
;如果我们每秒创建一百万个线程,那么在30万年之后,id就会溢出。
答案 2 :(得分:0)
线程终止时线程号(id)递增
没有
并创建了一个新线程。
是