1:获取Lock锁的几种方式
前面说了synchronized有锁对象和锁类对象,当某个线程获取锁其他线程必须等待执行完毕才可继续进行,比如线程A先获取锁,但是出现异常导致的后果就是线程B无法获取锁,会出现死锁的情况(http://www.cnblogs.com/LipeiNet/p/6475851.html),那么我们一起看看Lock是如何解决的。lock有4种方式来获取锁
1:lock.lock() 如果获取了锁立即返回,如果别的线程持有锁,当前线程则一直处于休眠状态,直到获取锁。此种模式和synchronized一样但是不会出现死锁
public class Lock1 { static int value = 0; static Lock lock = new ReentrantLock(); static class Task1 implements Runnable { public void run() { System.out.println("线程" + Thread.currentThread().getName() + "开始执行"); lock.lock(); try { for (int i = 0; i < 1000000; i++) { value++; &