一条线程是如何执行的呢
一条线程它有自己独立的栈和pc寄存器,寄存器的作用来存储字节码指令地址,它来告诉电脑要执行的下一条指令。
我们通过main方法反编译出来的代码,来详细的探究main线程执行方法中代码的具体过程:
开始执行:bipush 15
表示把15压入操作数栈中
执行 istore_1
表示把把操作数栈中的15拿出来,然后存入局部变量表1的位置
执行bipush 8 以及 istore_2 同上
都是把先把8放入操作数栈,然后拿出来存到局部变量表
执行 iload_1
表示把局部变量表中1位置的数据拿出来,放到操作数栈中
这个注意,拿出来并不会清空局部变量表1位置的数据,而是方法执行完才会清除
执行 iload_2
表示把局部变量表中2位置的数据拿出来,压到到操作数栈中
执行 iadd
表示执行+操作,然后在操作数栈中得到23
执行 istore_3
表示将操作数栈中的23拿出来,存放的局部变量表3的位置
最后执行 return
表示方法结束,销毁栈