亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java怎么同步代碼塊

java怎么同步代碼塊

fenkapian 2018-03-14 09:15:23
package sync.method;class PrintCH { ? ?public static void print(char c) { ? ? ? ?for (int i = 0; i < 4; i++) { ? ? ? ? ? ?System.out.print(c); ? ? ? ? ? ?try { ? ? ? ? ? ? ? ?Thread.sleep(1000); ? ? ? ? ? ?} catch (InterruptedException e) { ? ? ? ? ? ? ? ?e.printStackTrace(); ? ? ? ? ? ?} ? ? ? ?} ? ?}}public class SyncMassExample extends Thread { ? ?public char c; ? ?public /*static*/ PrintCH printCH = new PrintCH();? ? /// ? ?public SyncMassExample(char c) { ? ? ? ?this.c = c; ? ?} ? ?public void run() { ? ? ? ?synchronized (printCH) { ? ? ? ? ? ?PrintCH.print(c); ? ? ? ?} ? ?} ? ?public static void main(String[] args) { ? ? ? ?SyncMassExample s1 = new SyncMassExample('a'); ? ? ? ?SyncMassExample s2 = new SyncMassExample('b'); ? ? ? ?s1.start(); ? ? ? ?s2.start(); ? ?}}為什么同步代碼塊后的對象的應用得是靜態的? 就是我注釋的那里? 去掉static關鍵字 輸出內容就亂了 交替輸出a b
查看完整描述

1 回答

?
習慣受傷

TA貢獻885條經驗 獲得超1144個贊

在這里 synchronized 關鍵字多余,你這是兩個線程輸出,s1線程和s2線程是開始執行時間不不一定,所以會亂。你應該讓兩個線程join,如:
s1.join();
s2.join();

查看完整回答
1 反對 回復 2018-03-14
  • 1 回答
  • 0 關注
  • 969 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號