1。非公平锁不能保证按照请求锁的顺序获取锁。这可能会导致一个或多个线程永远无法获得锁。2、可以降低CPU唤醒线程的开销,整体吞吐效率会很高。但是,可能会有线程长时间得不到锁,甚至永远得不到锁,导致饥饿。实例/***非公平锁的同步对象*/staticfinalclassNonfairSyncextendsSync{privatestaticfinallongserialVersionUID=7316153563782823691L;/***执行锁定。尝试立即插入,备份到正常*失败时获取。*/finalvoidlock(){if(compareAndSetState(0,1))setExclusiveOwnerThread(Thread.currentThread());否则获取(1);}protectedfinalbooleantryAcquire(intacquires){returnnonfairTryAcquire(acquires);}}/***公平锁的同步对象*/staticfinalclassFairSyncextendsSync{privatestaticfinallongserialVersionUID=-3000897897090466540L;finalvoidlock(){获取(1);}/***tryAcquire的公平版本。不要授予访问权限,除非*递归调用或没有服务员或是第一个。*/protectedfinalbooleantryAcquire(intacquires){finalThreadcurrent=Thread.currentThread();intc=getState();if(c==0){if(!hasQueuedPredecessors()&&compareAndSetState(0,acquires)){setExclusiveOwnerThread(current);返回真;}}elseif(current==getExclusiveOwnerThread()){intnextc=c+acquires;if(nextc<0)thrownewError("超过最大锁计数");设置状态(下一个);返回真;}返回假;以上就是java非公平锁的介绍,希望对大家有所帮助更多Java学习指南:Java基础
