浅析synchronized底层实现与锁升级过程
在Java中,synchronized关键字是用来控制线程同步的。就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。 那么synchronized具体是怎么做到线程同步的呢?还有锁升级过程的过程是怎样的的?我们来探讨一下。 0x01 synchronized实现细节 1.1 Java代码实现 我们先来了看下如果多线程间竞争共享资源,不采取措施会出现什么情况: publicclassTestSyncimplementsRunnable{privateintcount=100;publicstaticvoidmain(String[]args){ TestSyncts=newTestSync(); Threadt1=newThread(ts,"线程1"); Threadt2=newThread(ts,"线程2"); Threadt3=newThread(ts,"线程3"); t1.start(); t2.start(); t3.start(); }@Override publicvoidrun(){while(true){if(count>0){ coun...
