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)死鎖
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++; &