同步锁Lock
程序员文章站
2022-06-05 18:58:53
一、用于解决多线程安全问题的方式 synchronized:隐式锁 1)同步代码块 2)同步方法 JDK1.5后 3)同步锁 Lock 注意:是一个显式锁,需要通过lock()方法上锁,必须通过unlock()方法进行释放锁。 1 public class TestLock { 2 public s ......
一、用于解决多线程安全问题的方式
synchronized:隐式锁
1)同步代码块 2)同步方法
jdk1.5后
3)同步锁 lock
注意:是一个显式锁,需要通过lock()方法上锁,必须通过unlock()方法进行释放锁。
1 public class testlock { 2 public static void main(string[] args) { 3 ticket ticket = new ticket(); 4 new thread(ticket, "1号窗口").start(); 5 new thread(ticket, "2号窗口").start(); 6 new thread(ticket, "3号窗口").start(); 7 } 8 } 9 10 class ticket implements runnable{ 11 private int tick = 100; 12 private lock lock = new reentrantlock(); 13 public void run() { 14 while(true){ 15 lock.lock(); //上锁 16 try{ 17 if(tick > 0){ 18 try { 19 thread.sleep(200); 20 } catch (interruptedexception e) { 21 } 22 system.out.println(thread.currentthread().getname() + " 完成售票,余票为:" + --tick); 23 } 24 }finally{ 25 lock.unlock(); //释放锁 26 } 27 } 28 } 29 }