java中请问如何等待一个线程结束在运行其他的代码?

情况是这样的,我在一个类a中调用了另外两个类b和c,先调用了继承线程的类b,只有一个线程,然后接着调用了类c,这样就出问题了,因为类c需要类b线程运行完后的结果,但是程序... 情况是这样的,我在一个类a中调用了另外两个类b和c,先调用了继承线程的类b,只有一个线程,然后接着调用了类c,这样就出问题了,因为类c需要类b线程运行完后的结果,但是程序在b的线程还没有运行完时就开始运行类c了,这样就导致了c没有需要的数据,并引发了错误,请各位大大帮忙解决下。说的思路如何搞啊?
哎,我的想法可能有些偏离线程的主题了,要么都用线程,要么不用,谢谢大家了!
展开
 我来答
拿破仑哈哈
2011-09-28 · TA获得超过136个赞
知道小有建树答主
回答量:69
采纳率:0%
帮助的人:45.8万
展开全部
使用java的线程同步机制。
现在存在两个线程a和b,伪代码如下:
在a的代码中:
b.start();//启动b线程
synchronized(b) b.wait();//a线程中采用同步,并进行等待
c.execute();
在b线程结束时调用synchronized(this) notify();
这样就可以达到b不结束,a线程就不会继续执行c。

注释:如果看不明白建议先学习一下java线程同步机制。
wanglan502
推荐于2016-11-27 · TA获得超过101个赞
知道答主
回答量:36
采纳率:0%
帮助的人:33.4万
展开全部
看你的描述,感觉少说明一点。B生成的数据是存数据库中,还是在缓存中。
但基本解决方法应该有两种:
一种:把C的逻辑代码放入B中,顺序执行。
另一种:把A也做成线程,周期用C去读B生成的数据,可以用if null 关键字来控制有没获取到
更多追问追答
追问
如果把A也做成线程的话好像不太可能,其实a是一个actionform具体用来操作文件转换的,b类转换一种格式,然后再用c类接着转换成另一种格式,由于b类需要用到一个服务,由于服务是线程不安全的所以启动了线程,而c类只是调用了process引用本地程序而已,如果没有其他方法的话a,b,c
类估计都要继承Thread类才能解决问题,或者除非b不用线程。所以我想能不能有其他的办法。
追答
B类发个执行成功的状态给A,如何?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zjhcjiangyc
2011-09-28 · 超过33用户采纳过TA的回答
知道答主
回答量:165
采纳率:0%
帮助的人:99.7万
展开全部
那B类一定要继承线程嘛,用run方法,B线程跑完后才会运行下面的程序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lansefly
2011-09-28 · TA获得超过275个赞
知道小有建树答主
回答量:549
采纳率:50%
帮助的人:226万
展开全部
线程锁
1.synchronized
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式