é¦å
è¦è¯´æçæ¯ï¼javaéä¸è½ç´æ¥ä½¿ç¨synchronized声æä¸ä¸ªåéï¼èæ¯ä½¿ç¨synchronizedå»ä¿®é¥°ä¸ä¸ªä»£ç åæä¸ä¸ªæ¹æ³ã
详ç»è¯´æå¦ä¸ï¼
synchronizedç¨æ¥ä¿®é¥°ä¸ä¸ªæ¹æ³æè
ä¸ä¸ªä»£ç åï¼å®ç¨æ¥ä¿è¯å¨åä¸æ¶å»æå¤åªæä¸ä¸ªçº¿ç¨æ§è¡è¯¥æ®µä»£ç ã
ä¸ãå½ä¸¤ä¸ªå¹¶å线ç¨è®¿é®åä¸ä¸ªå¯¹è±¡objectä¸çè¿ä¸ªsynchronized(this)åæ¥ä»£ç åæ¶ï¼ä¸ä¸ªæ¶é´å
åªè½æä¸ä¸ªçº¿ç¨å¾å°æ§è¡ãå¦ä¸ä¸ªçº¿ç¨å¿
é¡»çå¾
å½å线ç¨æ§è¡å®è¿ä¸ªä»£ç å以åæè½æ§è¡è¯¥ä»£ç åã
äºãç¶èï¼å½ä¸ä¸ªçº¿ç¨è®¿é®objectçä¸ä¸ªsynchronized(this)åæ¥ä»£ç åæ¶ï¼å¦ä¸ä¸ªçº¿ç¨ä»ç¶å¯ä»¥è®¿é®è¯¥objectä¸çésynchronized(this)åæ¥ä»£ç åã
ä¸ãå°¤å
¶å
³é®çæ¯ï¼å½ä¸ä¸ªçº¿ç¨è®¿é®objectçä¸ä¸ªsynchronized(this)åæ¥ä»£ç åæ¶ï¼å
¶ä»çº¿ç¨å¯¹objectä¸ææå
¶å®synchronized(this)åæ¥ä»£ç åç访é®å°è¢«é»å¡ã
åã第ä¸ä¸ªä¾ååæ ·éç¨å
¶å®åæ¥ä»£ç åãä¹å°±æ¯è¯´ï¼å½ä¸ä¸ªçº¿ç¨è®¿é®objectçä¸ä¸ªsynchronized(this)åæ¥ä»£ç åæ¶ï¼å®å°±è·å¾äºè¿ä¸ªobjectç对象éãç»æï¼å
¶å®çº¿ç¨å¯¹è¯¥object对象ææåæ¥ä»£ç é¨åç访é®é½è¢«ææ¶é»å¡ã
äºã以ä¸è§å对å
¶å®å¯¹è±¡éåæ ·éç¨ã
示ä¾ä»£ç ï¼
public class Thread1 implements Runnable {
public void run() {
synchronized(this) {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + " synchronized loop " + i);
}
}
}
public static void main(String[] args) {
Thread1 t1 = new Thread1();
Thread ta = new Thread(t1, "A");
Thread tb = new Thread(t1, "B");
ta.start();
tb.start();
}
}
ç»æï¼
A synchronized loop 0
A synchronized loop 1
A synchronized loop 2
A synchronized loop 3
A synchronized loop 4
B synchronized loop 0
B synchronized loop 1
B synchronized loop 2
B synchronized loop 3
B synchronized loop 4
温馨提示:答案为网友推荐,仅供参考