第一种Lock 锁
//公平锁
Lock lock1=new ReentrantLock(true);
举个例子,当A线程获得了锁开始访问同步资源的时候,B线程来了,因为锁没有释放,所以B开始等待,等待一段时间后,C线程也来了,俩线程都在等待,这个时候A释放锁了,根据先来后到的道理,B优先获得了锁。
//非公平锁
Lock lock2=new ReentrantLock(false);
那么非公平锁就不言而喻了。
这个时候线程B和线程C获得锁的几率是一样的。
//Lock是手动锁,加锁和释放必须得手动进行
public class TestLock {
//创建锁对象
Lock lock=new ReentrantLock(true);
public void m1(){
try {
//加上锁
lock.lock();
for(int i=0;i<10;i++){
TimeUnit.SECONDS.sleep(1);
System.out.println(i);
}
}catch (InterruptedException e){
e