【2013-11-27】《Java编程思想》读书笔记:synchronized

📅 2026/7/14 6:43:32 👁️ 阅读次数 📝 编程学习
【2013-11-27】《Java编程思想》读书笔记:synchronized

[历史归档]本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。
发布时间:2013-11-27| 标题:《Java编程思想》读书笔记:synchronized分类:编程 / java / think_in_java |标签:java·think in java·多线程·synchronized


《Java编程思想》读书笔记:synchronized

    • SyncTest.java
    • 部分日志输出
    • 备注

整理 Java 多线程相关技术,这里备份synchronized关键字的使用代码,展示方法级和代码块级两种同步方式。

GitHub:https://github.com/cstriker1407/think_in_java

SyncTest.java

publicclassSyncTest{privatestaticSyncTestinstance=newSyncTest();publicstaticvoidtest(){newThread(newRunnable(){@Overridepublicvoidrun(){for(inti=0;i<5;i++){instance.funA();try{Thread.sleep(1);}catch(InterruptedExceptione){e.printStackTrace();}}}}).start();newThread(newRunnable(){@Overridepublicvoidrun(){for(inti=0;i<5;i++){instance.funB();try{Thread.sleep(1);}catch(InterruptedExceptione){e.printStackTrace();}}}}).start();}publicsynchronizedvoidfunA(){System.out.println("A start");try{Thread.sleep(1);}catch(InterruptedExceptione){e.printStackTrace();}System.out.println("A end");}publicvoidfunB(){synchronized(this){System.out.println("B start");try{Thread.sleep(1);}catch(InterruptedExceptione){e.printStackTrace();}System.out.println("B end");}}}

部分日志输出

A start A end B start B end A start A end B start B end A start A end B star

备注

funA()使用synchronized修饰方法,funB()使用synchronized(this)代码块,两者锁的对象相同(当前实例),互斥效果一致。日志显示 A start/end 和 B start/end 不会交错出现。