浏览 2522 次
锁定老帖子 主题:关于java线程的一个问题
精华帖 (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() } } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-06-24
把System.out.println(this);
与b() 的调用 使用同一个同步锁. |
|
返回顶楼 | |
发表时间:2007-06-24
先谢谢Eastsun哈,我试过这样的方法,但是不行呀...
最后我用了一种最笨的方法 try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } 虽然这样很有用,但是不知道这对以后会有什么样的影响.... 恩,我这个程序是写一个游戏了啦,就是那种弹珠,下面有下横杠那种,我希望能实现的就是可以同时出现多个球运动..... |
|
返回顶楼 | |
发表时间:2007-06-24
zkgale 写道 先谢谢Eastsun哈,我试过这样的方法,但是不行呀...
最后我用了一种最笨的方法 try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } 虽然这样很有用,但是不知道这对以后会有什么样的影响.... 恩,我这个程序是写一个游戏了啦,就是那种弹珠,下面有下横杠那种,我希望能实现的就是可以同时出现多个球运动..... 你试过?你怎么使的? |
|
返回顶楼 | |
发表时间: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(); } } } } |
|
返回顶楼 | |