栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java线程:join方法的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java线程:join方法的使用

join方法的使用

Thread类的方法,不带参数 public final void join()
作用:等待调用该方法的线程结束后才能执行,是一种抢占资源的方式。

没有使用join方法:

package java_thread;

class MyThread2 extends Thread{
    public void run(){
        System.out.println(getName() + "正在执行!");
    }
}
public class JoinDemo {
    public static void main(String[] args) {
        MyThread2 mt = new MyThread2();
        System.out.println("主线程运行结束!");
    }
}

执行多次发现都是主线程先执行:

主线程运行结束!
Thread-0正在执行!

使用join方法:

public static void main(String[] args) {
    MyThread2 mt = new MyThread2();
    mt.start();
    try {
        mt.join();
    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println("主线程运行结束!");
}

输出:

Thread-0正在执行!
主线程运行结束!

主线程后执行了。

加入循环语句:

package java_thread;

class MyThread2 extends Thread{
    public void run(){
        for(int i=0; i <10; i++){
            System.out.println(getName() + "正在执行第" + i + "次");
        }
    }
}
public class JoinDemo {
    public static void main(String[] args) {
        MyThread2 mt = new MyThread2();
        mt.start();
        try {
            mt.join();
        } catch (Exception e) {
            e.printStackTrace();
        }
        for(int j=0; j<15; j++){
            System.out.println("主线程正在执行第" + j + "次");
        }
        System.out.println("主线程运行结束!");
    }
}

输出发现也是线程0先执行完10次,主线程再执行:

Thread-0正在执行第0次
Thread-0正在执行第1次
Thread-0正在执行第2次
Thread-0正在执行第3次
Thread-0正在执行第4次
Thread-0正在执行第5次
Thread-0正在执行第6次
Thread-0正在执行第7次
Thread-0正在执行第8次
Thread-0正在执行第9次
主线程正在执行第0次
主线程正在执行第1次
主线程正在执行第2次
主线程正在执行第3次
主线程正在执行第4次
主线程正在执行第5次
主线程正在执行第6次
主线程正在执行第7次
主线程正在执行第8次
主线程正在执行第9次
主线程正在执行第10次
主线程正在执行第11次
主线程正在执行第12次
主线程正在执行第13次
主线程正在执行第14次
主线程运行结束!

若不使用join方法,会发现线程0和主线程随机执行。

还有一种是join带参方法:public final void join(long millis)
作用:等待该线程终止的最长时间为millis毫秒
代码如下:

package java_thread;

class MyThread2 extends Thread{
    public void run(){
        for(int i=0; i<300; i++){
            System.out.println(getName() + "正在执行第" + i + "次");
        }
    }
}
public class JoinDemo {
    public static void main(String[] args) {
        MyThread2 mt = new MyThread2();
        mt.start();
        try {
            mt.join(1);
        } catch (Exception e) {
            e.printStackTrace();
        }
        for(int j=0; j<15; j++){
            System.out.println("主线程正在执行第" + j + "次");
        }
        System.out.println("主线程运行结束!");
    }
}

输出:

Thread-0正在执行第0次
Thread-0正在执行第1次
Thread-0正在执行第2次
Thread-0正在执行第3次
Thread-0正在执行第4次
Thread-0正在执行第5次
Thread-0正在执行第6次
Thread-0正在执行第7次
Thread-0正在执行第8次
主线程正在执行第0次  
主线程正在执行第1次  
主线程正在执行第2次  
主线程正在执行第3次  
主线程正在执行第4次  
主线程正在执行第5次  
主线程正在执行第6次  
主线程正在执行第7次  
主线程正在执行第8次
主线程正在执行第9次
Thread-0正在执行第9次
主线程正在执行第10次
Thread-0正在执行第10次
主线程正在执行第11次
Thread-0正在执行第11次
Thread-0正在执行第12次
主线程正在执行第12次
Thread-0正在执行第13次
主线程正在执行第13次
Thread-0正在执行第14次
主线程正在执行第14次
Thread-0正在执行第15次
主线程运行结束!
Thread-0正在执行第16次
Thread-0正在执行第17次
Thread-0正在执行第18次
Thread-0正在执行第19次
Thread-0正在执行第20次
Thread-0正在执行第21次
Thread-0正在执行第22次
Thread-0正在执行第23次
Thread-0正在执行第24次
Thread-0正在执行第25次
Thread-0正在执行第26次
Thread-0正在执行第27次
Thread-0正在执行第28次
Thread-0正在执行第29次
Thread-0正在执行第30次
Thread-0正在执行第31次
Thread-0正在执行第32次
Thread-0正在执行第33次
Thread-0正在执行第34次
Thread-0正在执行第35次
Thread-0正在执行第36次
Thread-0正在执行第37次
Thread-0正在执行第38次
Thread-0正在执行第39次
Thread-0正在执行第40次
Thread-0正在执行第41次
Thread-0正在执行第42次
Thread-0正在执行第43次
Thread-0正在执行第44次
Thread-0正在执行第45次
Thread-0正在执行第46次
Thread-0正在执行第47次
Thread-0正在执行第48次
Thread-0正在执行第49次
Thread-0正在执行第50次
Thread-0正在执行第51次
Thread-0正在执行第52次
Thread-0正在执行第53次
Thread-0正在执行第54次
Thread-0正在执行第55次
Thread-0正在执行第56次
Thread-0正在执行第57次
Thread-0正在执行第58次
Thread-0正在执行第59次
Thread-0正在执行第60次
Thread-0正在执行第61次
Thread-0正在执行第62次
Thread-0正在执行第63次
Thread-0正在执行第64次
Thread-0正在执行第65次
Thread-0正在执行第66次
Thread-0正在执行第67次
Thread-0正在执行第68次
Thread-0正在执行第69次
Thread-0正在执行第70次
Thread-0正在执行第71次
Thread-0正在执行第72次
Thread-0正在执行第73次
Thread-0正在执行第74次
Thread-0正在执行第75次
Thread-0正在执行第76次
Thread-0正在执行第77次
Thread-0正在执行第78次
Thread-0正在执行第79次
Thread-0正在执行第80次
Thread-0正在执行第81次
Thread-0正在执行第82次
Thread-0正在执行第83次
Thread-0正在执行第84次
Thread-0正在执行第85次
Thread-0正在执行第86次
Thread-0正在执行第87次
Thread-0正在执行第88次
Thread-0正在执行第89次
Thread-0正在执行第90次
Thread-0正在执行第91次
Thread-0正在执行第92次
Thread-0正在执行第93次
Thread-0正在执行第94次
Thread-0正在执行第95次
Thread-0正在执行第96次
Thread-0正在执行第97次
Thread-0正在执行第98次
Thread-0正在执行第99次
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/353883.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号