Java多线程问题。A,B,C三个个不同的线程。A负责发送数据,B负责网络连接,C负责数据处理。

首先确定B,然后轮到A,最后C工作。如何完成这个过程呢呢。请各位帮忙。阐述原理,提出可行性方法即可。

第1个回答  2012-08-31
你这个没有必要多线程,一定要这样的话看代码
public class Test {
public static void main(String[] args) throws Exception {
Thread a = new Thread(new A());
Thread b = new Thread(new B());
Thread c = new Thread(new C());
b.start();
b.join();
a.start();
a.join();
c.start();
c.join();
}
}
class A implements Runnable {
@Override
public void run() {
System.out.println("a");
}
}
class B implements Runnable {
@Override
public void run() {
System.out.println("b");
}
}
class C implements Runnable {
@Override
public void run() {
System.out.println("c");
}
}本回答被网友采纳
第2个回答  2012-08-31
你提出的这种问题 本身就不适合用多线程去处理

你的工作 有明显的先后顺序 这要用多线程 不是添乱么

如果非要用的话 就加上一个 blooean的变量表示

B 执行完成 标示为true
这时 线程A才能进入run的实际运行方法中 否则退出
同理 A执行完成 标示为true
只有 B 和 A的标示 都为true C才能进入实际运行方法
第3个回答  2012-08-31
BAC的顺序,只是启动下一个线程前,需要等待另一个线程的结果返回,你可以配合接口,来回调,
例如:
class Main implement BListener{
public void startTask(){
启动B线程,并传入listener实例,来回调用;
}
//override
public void BTaskComplete(){
B线程成功执行;

启动A线程;
}

}

class B extends Thread{
可以构造时获取Listener实例;
public void run(){
...
执行完毕出结果,Listener.BTaskComplete();

}

}
只是个大概思路,不过已经很清楚了,希望对你有帮助.本回答被提问者采纳
第4个回答  2012-08-31
应该是开启线程B,再到C,最后是A吧。 想你那样,在开启A之后,C启动之前,A发送的数据C就接受不到,处理不了了。
相似回答