论坛首页 入门技术论坛

关于java线程的一个问题

浏览 2522 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-06-24  
最近在写一个程序.其中就遇到了这样一个问题.我希望实现两个或多个线程,而这些线程的顺序是

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


   发表时间:2007-06-24  
把System.out.println(this);  
与b() 的调用 
使用同一个同步锁.
0 请登录后投票
   发表时间:2007-06-24  
先谢谢Eastsun哈,我试过这样的方法,但是不行呀...
最后我用了一种最笨的方法
try {
    Thread.sleep(200);
    } catch (InterruptedException e) {
        e.printStackTrace();
	}

虽然这样很有用,但是不知道这对以后会有什么样的影响....



恩,我这个程序是写一个游戏了啦,就是那种弹珠,下面有下横杠那种,我希望能实现的就是可以同时出现多个球运动.....
0 请登录后投票
   发表时间:2007-06-24  
zkgale 写道
先谢谢Eastsun哈,我试过这样的方法,但是不行呀...
最后我用了一种最笨的方法
try {
    Thread.sleep(200);
    } catch (InterruptedException e) {
        e.printStackTrace();
	}

虽然这样很有用,但是不知道这对以后会有什么样的影响....



恩,我这个程序是写一个游戏了啦,就是那种弹珠,下面有下横杠那种,我希望能实现的就是可以同时出现多个球运动.....

你试过?你怎么使的?
0 请登录后投票
   发表时间:2007-06-24  
我的意思是这样的:
class a   
{   
    public void b()   
    {   
        System.out.println("----a----");   
    }   
    class c extends Thread   
    {   
        public void run()   
        {   
            synchronized(a.this){
                System.out.println(this);   
                b();   
            }
        }   
    }   
} 
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics