package basic;public class TestSynchronizedObject { public static void main(String[] args) { final MyObject myObject_first = new MyObject(); final MyObject myObject_seconde = new MyObject(); new Thread("線程A") { @Override public void run() { myObject_first.print("線程A"); } }.start(); new Thread("線程B") { @Override public void run() { myObject_seconde.print("線程B"); } }.start(); }}class MyObject { public void print(String str) { System.out.println("線程" + Thread.currentThread().getName() + "開始執(zhí)行"); 輸出結(jié)果:線程線程A開始執(zhí)行線程A .0. 線程線程B開始執(zhí)行線程A .1. 線程A .2. 線程A .3. 線程A .4. 線程A .5. 線程A .6. 線程A .7. 線程A .8. 線程A .9. 線程線程A執(zhí)行結(jié)束線程B .0. 線程B .1. 線程B .2. 線程B .3. 線程B .4. 線程B .5. 線程B .6. 線程B .7. 線程B .8. 線程B .9. 線程線程B執(zhí)行結(jié)束很顯然,兩個對象互斥執(zhí)行了??梢曃益i住的是String的所有實例化對象,而我開的線程用的是MyObject對象,我既然沒有鎖住MyObject對象,它為什么互斥執(zhí)行呢?package basic;public class TestSynchronizedObject { public static void main(String[] args) { final MyObject myObject_first = new MyObject(); final MyObject myObject_seconde = new MyObject(); new Thread("線程A") { @Override public void run() { myObject_first.print("線程A"); } }.start(); new Thread("線程B") { @Override public void run() { myObject_seconde.print("線程B"); } }.start(); }}class MyObject { public void print(String str) { System.out.println("線程" + Thread.currentThread().getName() + "開始執(zhí)行");如果這樣,它的輸出結(jié)果為:線程線程A開始執(zhí)行線程A .0. 線程線程B開始執(zhí)行線程A .1. 線程A .2. 線程A .3. 線程A .4. 線程A .5. 線程A .6. 線程A .7. 線程A .8. 線程A .9. 線程B .0. 線程線程A執(zhí)行結(jié)束線程B .1. 線程B .2. 線程B .3. 線程B .4. 線程B .5. 線程B .6. 線程B .7. 線程B .8. 線程B .9. 線程線程B執(zhí)行結(jié)束關(guān)于synchronized修飾代碼塊時,括號后面要跟什么,有沒有這方面的博客詳細解答一下哈,謝謝~~
添加回答
舉報
0/150
提交
取消