Java多线程问题。A,B,C三个个不同的线程。A负责发送数据,B负责网络连接,C负责数据处理。
首先确定B,然后轮到A,最后C工作。如何完成这个过程呢呢。请各位帮忙。阐述原理,提出可行性方法即可。...
首先确定B,然后轮到A,最后C工作。如何完成这个过程呢呢。请各位帮忙。阐述原理,提出可行性方法即可。
展开
4个回答
展开全部
你这个没有必要多线程,一定要这样的话看代码
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");
}
}
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");
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你提出的这种问题 本身就不适合用多线程去处理
你的工作 有明显的先后顺序 这要用多线程 不是添乱么
如果非要用的话 就加上一个 blooean的变量表示
B 执行完成 标示为true
这时 线程A才能进入run的实际运行方法中 否则退出
同理 A执行完成 标示为true
只有 B 和 A的标示 都为true C才能进入实际运行方法
你的工作 有明显的先后顺序 这要用多线程 不是添乱么
如果非要用的话 就加上一个 blooean的变量表示
B 执行完成 标示为true
这时 线程A才能进入run的实际运行方法中 否则退出
同理 A执行完成 标示为true
只有 B 和 A的标示 都为true C才能进入实际运行方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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();
}
}
只是个大概思路,不过已经很清楚了,希望对你有帮助.
例如:
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();
}
}
只是个大概思路,不过已经很清楚了,希望对你有帮助.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是开启线程B,再到C,最后是A吧。 想你那样,在开启A之后,C启动之前,A发送的数据C就接受不到,处理不了了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询