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++;
           &