lock锁也是用于处理线程同步问题的,用法也很简单,只需要定义一个lock锁,在需要互斥访问的代码前上锁,在代码后解锁。
public class testLock { public static void main(String[] args) { TestLock2 testLock2 = new TestLock2(); new Thread(testLock2).start(); new Thread(testLock2).start(); new Thread(testLock2).start(); } } class TestLock2 implements Runnable{ int TicketNums = 10; //定义lock锁 private final ReentrantLock lock = new ReentrantLock(); @Override public void run() { // TODO Auto-generated method stub while(true) { try { lock.lock();//加锁 if(TicketNums>0) { try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(TicketNums--); }else { break; } }finally { //解锁 lock.unlock(); } } } }