公平锁与非公平锁
公平锁:先到先来,当下一个锁解开的时候,由锁未解开前先到的执行。
非公平锁:锁解开的一瞬间,谁抢到算安谁的。
具体操作:在显式锁定义对象时传入true
Lock l = new ReentrantLock(true);
package xc;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Demo9 {
public static void main(String[] args) {
Runnable t = new Ticket();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
}
static class Ticket implements Runnable {
//票数
private int count = 10;
//锁
Lock l = new ReentrantLock(true);
@Override
public void run() {
while (true) {
l.lock();
if (count > 0) {
System.out.println(Thread.currentThread().getName() + "正在买票");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
count--;
System.out.println("卖票成功,还有票数:" + count);
l.unlock();
} else {
break;
}
}
}
}
}