同步锁Lock,
分享于 点击 12470 次 点评:280
同步锁Lock,
一、用于解决多线程安全问题的方式
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 }
相关文章
- 暂无相关文章
用户点评