-
悲观锁
悲观,则会假设情况总是最坏的,即共同维护的数据总会被其他线程修改,所以每次取数据的时候都会上锁,避免其他人修改。
-
synchronized
关键字的实现也是悲观锁。 -
悲观锁的缺点
-
在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。
-
一个线程持有锁会导致其它所有需要此锁的线程挂起。
-
如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。
-
synchronized 锁的形式
public static void main(String[] args) {
MyThread t1 = new MyThread("窗口一");
MyThread t2 = new MyThread("窗口二");
t1.start();
t2.start();
}
//错误情况
@Override
public void run() {
while(count > 0) {
System.out.println(Thread.currentThread().getName()+"售出:"+(count--) +" 票");
try {