Java多线程中使用ReentrantLock、synchronized加锁 简单举例
生活随笔
收集整理的這篇文章主要介紹了
Java多线程中使用ReentrantLock、synchronized加锁 简单举例
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Java多線程中使用ReentrantLock、synchronized加鎖 簡(jiǎn)單舉例 public class Demo {final static Lock lock = new ReentrantLock();public static void test(Long userId) throws InterruptedException {System.out.println("------線程開(kāi)始進(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("------線程開(kāi)始進(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支持對(duì)異常的處理。
2、synchronized不支持對(duì)異常的處理,但支持對(duì)特定的某一對(duì)象值加鎖。
posted on 2019-05-09 09:47 三天打魚(yú),兩天曬網(wǎng) 閱讀(...) 評(píng)論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/yanketao/p/10836722.html
總結(jié)
以上是生活随笔為你收集整理的Java多线程中使用ReentrantLock、synchronized加锁 简单举例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: No-8.其他命令
- 下一篇: Java并发编程,3分分钟深入分析vol