我們經(jīng)常見到類似的jstack信息
"main" #1 prio=5 os_prio=31 tid=0x00007fa63900c800 nid=0x1703 waiting on condition [0x0000700000219000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at Test.main(Test.java:5)
nid=0x1703 nid我們都知道是其實(shí)就是進(jìn)程id钓账。
那tid呢,tid=0x00007fa63900c800 還這么大的一個(gè)數(shù)字
有人說這個(gè)就是java自己的線程id啊这橙,Thread.getId()啊
然后我就測(cè)試了下,
public static void main(String[] args) throws Exception {
System.out.println("-------------"+Thread.currentThread().getId());
結(jié)果是-------------1
多創(chuàng)建幾個(gè)線程看看,線程id是9啊,10啊两波,規(guī)律就是從1開始一直遞增的。
和tid=0x00007fa63900c800 這么大的數(shù)字完全對(duì)不上啊闷哆。
同事給我一個(gè)提示雨女,這是不是個(gè)內(nèi)存地址啊。
好像是哦阳准,正好是16個(gè)16進(jìn)制,轉(zhuǎn)成2進(jìn)制就是16*4=64位馏臭,內(nèi)存地址也是64位野蝇。
然后就是使用hsdb工具來查看了:
image.png
image.png
確實(shí)是個(gè)內(nèi)存地址,但是不是線程棧開始的位置括儒,而是比較靠后的位置绕沈。
這個(gè)位置具體是什么意思就后面有機(jī)會(huì)再看了。