【2013-11-27】《Java编程思想》读书笔记:synchronized
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2013-11-27 标题《Java编程思想》读书笔记synchronized分类编程 / java / think_in_java 标签java·think in java·多线程·synchronized《Java编程思想》读书笔记synchronizedSyncTest.java部分日志输出备注整理 Java 多线程相关技术这里备份synchronized关键字的使用代码展示方法级和代码块级两种同步方式。GitHubhttps://github.com/cstriker1407/think_in_javaSyncTest.javapublicclassSyncTest{privatestaticSyncTestinstancenewSyncTest();publicstaticvoidtest(){newThread(newRunnable(){Overridepublicvoidrun(){for(inti0;i5;i){instance.funA();try{Thread.sleep(1);}catch(InterruptedExceptione){e.printStackTrace();}}}}).start();newThread(newRunnable(){Overridepublicvoidrun(){for(inti0;i5;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 不会交错出现。