- Java code
public class Test4 { public static void main(String[] args) { computer4 c1 = new computer4('a'); computer4 c2 = new computer4('b'); c1.start(); c2.start(); }}class computer4 extends Thread { char ch; Object obj = new Object(); computer4(char ch) { this.ch = ch; } public void print(char ch) { for (int i = 0; i < 10; i++) { System.out.print(ch); } } public void run() { synchronized (obj) { print(this.ch); System.out.println(); } }}
代码如上,不知道我写的有没有问题。我的意图是打印如
“aaaaaaaaa
bbbbbbbbb”或
“bbbbbbbbb
aaaaaaaaa”
但是,多次输出总有其他情况产生,不知道这个是什么原因?
------解决方案--------------------
你在 你的computer4 run方法里,
这样写同步块:
- Java code
synchronized (computer4.class)
------解决方案--------------------
- Java code
Object obj = new Object();