![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=1739284726-N3ogDA73CPIopqKgN0yMJ9G83uCaESdS-0-91f367bbcd89a6daf6a419c3291ec1e8)
FiveMain类主方法,代码如下:
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P16_18601.jpg?sign=1739284726-aDHvLkjW1psupcdxAl8UdvLTDweTn5iJ-0-c169930863d5fd73efb03a5b94e04801)
执行结果如下:
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P16_18603.jpg?sign=1739284726-V0Fep4xnfCWkIsa0lOuapHgrjLm9I5Tg-0-5bc9adece3cb6aeb5f74fc3ba13e798b)
2)通过setName(String name)方法设置名称
代码如下:
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P17_18604.jpg?sign=1739284726-uwciPsBJ2wLwlpbZHO6ouYId7MJsKOZ8-0-5a068bf392d35de77e5138f748f18d21)
执行结果如下:
FiveThread:通过方法设置-名称 FiveThread:通过方法设置-名称
注意:如果没有设置名称,则默认生成一个固定格式的名称,如图1-5所示。
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P17_9816.jpg?sign=1739284726-hbSBVZGhRcrQAX6BEASXbr96ZhmJCASv-0-a421d8e0410afbc6340401bde4779f23)
图1-5 默认线程名称
线程的名称需要根据业务设置,做到见名知意,名称虽然没有强制要求唯一,但是在使用中不要出现同名的情况。
2.线程ID
getId()方法可以返回一个long型的值,每次创建线程对象时增加1操作,并发安全,如图1-6所示。
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P17_9820.jpg?sign=1739284726-g0UsCGNO4UOmwRet7WWNbQ0uhTxkk8HI-0-fd41a1feb04a33dff917f0eafa612090)
图1-6 线程ID
3.当前执行线程对象
Thread.currentThread()可以获得当前执行线程对象,这里一定要分清楚当前对象和当前执行线程对象的区别,代码如下:
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P17_18605.jpg?sign=1739284726-6AlFLNZpeuChoazwovIaF4OJmfg8Dq4i-0-dc390bac658a189ee2ad19d5ebcb088d)
FiveMain类主方法,代码如下:
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P18_18607.jpg?sign=1739284726-Lv8sMCYH4W9HCj6fLce4KXJ4cWJmHIpj-0-e29ab0941c736d85c011ddc238eb0017)
执行结果如下:
FiveThread:通过方法设置-名称 currentThread:通过方法设置-名称
修改FiveMain类,代码如下:
![](https://epubservercos.yuewen.com/DAFF96/31397728807979506/epubprivate/OEBPS/Images/Figure-P18_18608.jpg?sign=1739284726-D6UsmSR1wdK38VflynWEo5n8K6q3fVjj-0-7fbce427334db1cba0f6c41518c69c55)
执行结果如下:
FiveThread:通过方法设置-名称 currentThread:main
注意:fiveThread.run()方法并没有启动新的线程,里面是由当前主方法的默认线程去执行的,所以Thread.currentThread().getName()输出的当前执行线程对象的名称是main,而this.getName()获得的是当前对象的名称。