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

问个关于java中线程的问题,谢谢
假设有循环
for(int   i=0;i <n;i++)
{
        运行某个功能f
}
因为功能f在执行过程中需要等待服务器反馈,因此需要等待一定时间。为了提高算法的执
行效率,我准备用线程把这个功能给封装起来,这样就可提高算法的并行性。当然,这些
功能之间没有共用的数据。
但是另一方面,我需要判断相应的功能有没有运行完毕。如果运行完毕,则在后继的代码
里进行相应的操作;如果还没有运行完毕,则继续等待,直到其运行结束。

如果不用线程,我可以
for(int   i=0;i <n;i++)
{
        运行某个功能f;
        后继操作;
}
但是用了线程之后,我也需要进行一些后继操作,应该怎么设计呢?
非常感谢。100分送上,如果不够,我还可以再增加,^_^

------解决方案--------------------
把功能与后续操作都放到一个线程里不行吗?
------解决方案--------------------
我想也是把后续操作放到线程里,
如果这样不行的话,我想几种方法吧,没有经过深思熟虑,也不知道是否可行

1、用一个boolean属性记录线程运行状态,并单开一个线程不停地循环读这个属性,如果为true就调用后续操作的方法,并且这个方法对这个属性加锁,操作完再把属性改成false

2、jdk5.0中的新特性,线程是可以还回返回值的,时间长了,忘记怎么用了,你看看那部分,看能不能解决你的问题
------解决方案--------------------
用管道流可是很方便的实现线程之间的通讯

PipedInputStream
PipedOutputStream

剩下的不用我告诉你了吧