【2013-11-27】《Java编程思想》读书笔记:synchronized
📅 2026/7/14 6:43:32
👁️ 阅读次数
📝 编程学习
[历史归档]本文原发布于 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 不会交错出现。
编程学习
技术分享
实战经验