Java多线程中使用ReentrantLock、synchronized加锁 简单举例
生活随笔
收集整理的這篇文章主要介紹了
Java多线程中使用ReentrantLock、synchronized加锁 简单举例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Java多線程中使用ReentrantLock、synchronized加鎖 簡單舉例 public class Demo {final static Lock lock = new ReentrantLock();public static void test(Long userId) throws InterruptedException {System.out.println("------線程開始進(jìn)入-----" + new Date());lock.lock();try {System.err.println("打印..." + new Date());Thread.sleep(5000);} catch (Exception e) {}finally {lock.unlock(); //必須在finally中解鎖
}}public static void test2(Long userId) throws InterruptedException {System.out.println("------線程開始進(jìn)入-----" + new Date());synchronized (String.valueOf(userId).intern()) {System.err.println("打印..." + new Date());Thread.sleep(5000);}}public static void main(String[] srrt) {for(int i = 0;i < 3;i++) {new Thread(new Runnable() {@Overridepublic void run() {try {test2(1234L);} catch (InterruptedException e) {e.printStackTrace();}}}).start();}}
}
1、ReentrantLock支持對異常的處理。
2、synchronized不支持對異常的處理,但支持對特定的某一對象值加鎖。
posted on 2019-05-09 09:47 三天打魚,兩天曬網(wǎng) 閱讀(...) 評論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/yanketao/p/10836722.html
總結(jié)
以上是生活随笔為你收集整理的Java多线程中使用ReentrantLock、synchronized加锁 简单举例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: No-8.其他命令
- 下一篇: java美元兑换,(Java实现) 美元