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();
添加回答
举报
0/150
提交
取消