欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

同步锁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 }