javagrowing / JGrowing

Java is Growing up but not only Java。Java成长路线,但学到不仅仅是Java。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

synchronized为啥会阻塞同一个类中的方法?求解

naxienianHaiF opened this issue · comments

commented

情况A:有可能t线程已经在执行了,但是由于m2先进入了同步代码块,这个时候t进入阻塞状态,然后主线程也将会执行输出,这个时候又有一个争议到底是谁先执行?是t先执行还是主线程,这里有小伙伴就会把第3点拿出来说,肯定是先输出啊,t线程不是阻塞的吗,调度到CPU肯定来不及啊?很多人忽略了一点,synchronized其实是在1.6之后做了很多优化的,其中就有一个自旋锁,就能保证不需要让出CPU,有可能刚好这部分时间和主线程输出重合,并且在他之前就有可能发生,b先等于1000,这个时候主线程输出其实就会有两种情况。2000 或者 1000。

commented

这个就是java的基础了 可以自行百度搜索一下