java里面在主线程产生多个子线程,怎么让这些子线程同时运行,运行完以后再继续执行主线程??

java里面在主线程产生多个子线程,怎么让这些子线程同时运行,运行完以后再继续执行主线程??... java里面在主线程产生多个子线程,怎么让这些子线程同时运行,运行完以后再继续执行主线程?? 展开
 我来答
韶华易逝终是空
2014-03-17 · 超过12用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:34.6万
展开全部
package thread;
public class TestJoin {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ThreJo t= new ThreJo("a");
t.start();
ThreJo t2= new ThreJo("b");
t2.start();
try {
t.join();
t2.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
System.out.println("出错了");
return ;
}
for(int i =0;i<50;i++){
System.out.println("调用主线程第"+i+"次");
}
}

}

class ThreJo extends Thread{

ThreJo(String s){
super(s);
}

public void run(){
for(int i =0;i<50;i++){
System.out.println("继承Thread"+i+"次,我是"+getName());
}
}
}
jamxval
2014-03-17 · TA获得超过6821个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1407万
展开全部
public static void main(String[] args) {
int cnt = 10;
ArrayList workers = new ArrayList();
for(int i = 0; i < cnt; i++) {
Thread worker = new Thread(new MyJob());
worker.start();
workers.add(worker);
}

for(int i = 0; i < cnt; i++) {
worker.join(); // 这里表示等待它完成。
}

// 这里面的代码只会在所有 worker 完成之后才运行。
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
张郎99994
2017-09-04
知道答主
回答量:6
采纳率:0%
帮助的人:5349
展开全部
//采用 线程中的jion()方法合并线程 详细案列详见下面的代码

public class MyJionThreadDemo {

public static void main(String[] args) {
JionDemo[] arr=new JionDemo[100];
for(int i=0;i<arr.length;i++){
arr[i]=new JionDemo();
}
for(int i=0;i<arr.length;i++){
try {
arr[i].join();
} catch (InterruptedException e) {
e.printStackTrace();
}
arr[i].start();
}
for(int i=0;i<100;i++){ //主线程最后运行
System.out.println("线程:"+Thread.currentThread().getName()+"正在运行");
}

}

}

class JionDemo extends Thread{
@Override
public void run() {
for(int i=0;i<5;i++){
System.out.println("线程:"+currentThread().getName()+"正在运行");
}
System.out.println("线程:"+currentThread().getName()+"运行结束");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9635078
推荐于2018-02-27 · TA获得超过116个赞
知道答主
回答量:73
采纳率:0%
帮助的人:78.3万
展开全部
public class ThreadTest {
    static int i=0;
    public static void main(String[]args){
        //建立3个子线程,以i,i,n,m作为子线程是否结束的判断
        //当所有子线程运行完才开始主线程
        System.out.println("主线程开始");
        Thread t1=new Thread(){
        public void run(){
        System.out.println("子线程1");
        ThreadTest.i+=1;
        }
        };
        //开启线程1
        t1.start();
        Thread t2=new Thread(){
        public void run(){
        try {
        Thread.sleep(1000);
        } catch (InterruptedException e) {
        e.printStackTrace();
        }
        System.out.println("子线程2");
        ThreadTest.i+=1;
        }
        };
        //开启线程2
        t2.start();
        Thread t3=new Thread(){
        public void run(){
        System.out.println("子线程3");
        ThreadTest.i+=1;
        }
        };
        //开启线程3
        t3.start();
        boolean res=true;
        while(res){
        //这里判断子线程是否运行完了
        if(ThreadTest.i==3){
        System.out.println("主线程结束");
        res=false;
        }
        }
    }
}

你是想要这效果么

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友607e779
2014-03-17
知道答主
回答量:4
采纳率:0%
帮助的人:4653
展开全部
创建完线程让她们全部进入等待状态,然后当最后一个线程创建完毕集体唤醒
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式