最近在写一个程序.其中就遇到了这样一个问题.我希望实现两个或多个线程,而这些线程的顺序是Thread[Thread-2,5,main] 
----a---- <这是线程2调用b时打印出的> 
Thread[Thread-3,5,main] 
----a---- <这是线程3调用b时打印出的>上面的顺序是我所希望的...但往往会是这样的结果: 
Thread[Thread-2,5,main] 
Thread[Thread-3,5,main] 
----a---- 
----a---- 
因此会使我的程序出现错误.我知道这是因为线程的原因造成的 
我只是想看那们前辈有没有什么好的方法,能够解决这样的问题以下是实例代码
代码
class a   
{   
    public synchronized void b()   
    {   
        System.out.println("----a----");   
    }   
    class c extends Thread   
    {   
        public void run()   
        {   
            System.out.println(this);   
            b()   
        }   
    }   
}   

解决方案 »

  1.   

    试试:
    class a
    {
    public synchronized void b()
    {
    System.out.println("----a----");
    }
    class c extends Thread
    {
    public void run()
    {
    synchronized (System.out){
    System.out.println(this);
    b();
    }
    }
    }
    }
      

  2.   

    先谢谢objectart() 哈,我试过这样的方法,但是不行呀... 
    最后我用了一种最笨的方法 
    代码
    try {   
        Thread.sleep(200);   
        } catch (InterruptedException e) {   
            e.printStackTrace();   
        }   
    虽然这样很有用,但是不知道这对以后会有什么样的影响....恩,我这个程序是写一个游戏了啦,就是那种弹珠,下面有下横杠那种,我希望能实现的就是可以同时出现多个球运动.....