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

关于java线程的一个问题
最近在写一个程序.其中就遇到了这样一个问题.我希望实现两个或多个线程,而这些线程的顺序是

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()      
                }      
        }      
}      


------解决方案--------------------
试试:
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();
}
}
}
}