日期:2014-05-20  浏览次数:20658 次

多线程的同步问题
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();