1:獲取Lock鎖的幾種方式

前面說了synchronized有鎖對象和鎖類對象,當(dāng)某個線程獲取鎖其他線程必須等待執(zhí)行完畢才可繼續(xù)進(jìn)行,比如線程A先獲取鎖,但是出現(xiàn)異常導(dǎo)致的后果就是線程B無法獲取鎖,會出現(xiàn)死鎖的情況(http://www.cnblogs.com/LipeiNet/p/6475851.html),那么我們一起看看Lock是如何解決的。lock有4種方式來獲取鎖

1:lock.lock() 如果獲取了鎖立即返回,如果別的線程持有鎖,當(dāng)前線程則一直處于休眠狀態(tài),直到獲取鎖。此種模式和synchronized一樣但是不會出現(xiàn)死鎖

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

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() + "開始執(zhí)行");
            lock.lock();            try {                for (int i = 0; i < 1000000; i++) {
                    value++;
           &