【10】公平鎖/非公平鎖
阿新 • • 發佈:2018-12-03
int sta lean 運行 ide pub isp tar fin
說起來用起來其實很簡單 ReentrantLock
公平鎖的就是我先到了,發出申請,此時我一定排在那到鎖隊列的前面
非公平鎖,就是 我要拿鎖 有人拿了,我排隊,沒人拿,就是我的 排隊的等著
package Concurrency.mid; import java.util.concurrent.locks.ReentrantLock; class Service{ private ReentrantLock lock; public Service(boolean flag){ lock = new ReentrantLock(flag); }View Codepublic void serviceMethod(){ try{ lock.lock(); System.out.println(Thread.currentThread().getName()+ "鎖定成功"); }finally { lock.unlock(); } } } public class ReentrantLockTest { public static void main(String []arg){ final Service s= newService(true); Runnable r = new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName()+ "運行了 成功"); s.serviceMethod(); } }; Thread [] t = new Thread[10]; for(int i=0;i<10;i++){ t[i]= new Thread(r); } for(int i=0;i<10;i++){ t[i].start(); } } }
實現源碼 看不懂(等我在學學的 再補)
【10】公平鎖/非公平鎖