![Java多线程并发体系实战(微课视频版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/362/52842362/b_52842362.jpg)
上QQ阅读APP看书,第一时间看更新
1.5.2 常用方法
1.线程名称
1)通过构造参数传入名称
代码如下:
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P16_18600.jpg?sign=1739568611-rZok9YgJi7ONIZWYw2M41yEA77wwBUbb-0-a0b1e74c5f9e53510f4d1cc9e729908d)
FiveMain类主方法,代码如下:
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P16_18601.jpg?sign=1739568611-N0z8U051GHdzHPkG8ArP85SLNg2wv1gG-0-0cd474a21df18413978e439da9c626d9)
执行结果如下:
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P16_18603.jpg?sign=1739568611-Qaery3ZaTptNU1tGTWybSWgbEWOg3BkF-0-19c9bec2cdc91f325c7c894c378e699d)
2)通过setName(String name)方法设置名称
代码如下:
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P17_18604.jpg?sign=1739568611-wd8GBr9Uqp7akkMFdczNZFpGvbjUlyno-0-44fbb43e81f603c708283311b4c3b2d4)
执行结果如下:
FiveThread:通过方法设置-名称 FiveThread:通过方法设置-名称
注意:如果没有设置名称,则默认生成一个固定格式的名称,如图1-5所示。
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P17_9816.jpg?sign=1739568611-hzz3yDfCqbo6r8ZjEdrOiY1sFp108kFC-0-88afdccc3d565c77e9d2ac8a7cdfbeba)
图1-5 默认线程名称
线程的名称需要根据业务设置,做到见名知意,名称虽然没有强制要求唯一,但是在使用中不要出现同名的情况。
2.线程ID
getId()方法可以返回一个long型的值,每次创建线程对象时增加1操作,并发安全,如图1-6所示。
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P17_9820.jpg?sign=1739568611-FfoNwPSLjueqBMaDui6UBEwOnXRCU1Ii-0-0862ee9a447cbd6744f5f98a6b548e31)
图1-6 线程ID
3.当前执行线程对象
Thread.currentThread()可以获得当前执行线程对象,这里一定要分清楚当前对象和当前执行线程对象的区别,代码如下:
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P17_18605.jpg?sign=1739568611-yE4xSOqGSsbKKvRcVxudffQtpG4SqFIz-0-8fef4bc3e34d39d1ead71d61eabffdb2)
FiveMain类主方法,代码如下:
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P18_18607.jpg?sign=1739568611-QQ28KJlmbus4F97XBxlPfJNwMD5QTUcr-0-fa87d3e4b7cbe3adcdf2efd4c36fda8b)
执行结果如下:
FiveThread:通过方法设置-名称 currentThread:通过方法设置-名称
修改FiveMain类,代码如下:
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P18_18608.jpg?sign=1739568611-6crn0LcbmbmnFZCZf9r7WUqTDfdPfq2q-0-9667d37240ecaef8232f63e73b172332)
执行结果如下:
FiveThread:通过方法设置-名称 currentThread:main
注意:fiveThread.run()方法并没有启动新的线程,里面是由当前主方法的默认线程去执行的,所以Thread.currentThread().getName()输出的当前执行线程对象的名称是main,而this.getName()获得的是当前对象的名称。