• 线程等待 Join()方法


    • Join()方法是让一个线程等待另一个线程的完成
      这里写图片描述
      下面看个例子:
    package project11;
    
    public class TestJoin extends Thread {
        public void run() {
            for(int i= 1;i<=10;i++)//线程循环10次输出
            {
                System.out.println(Thread.currentThread().getName()+"第"+i+"次运行");
            }
            System.out.println(Thread.currentThread().getName()+"运行结束");
        }
        public static void main(String [] args) {   //main函数的主线程开始运行
            System.err.println("主线程开始运行");
            TestJoin tj = new TestJoin();   //创建线程类
            tj.setName("线程1");    //给线程起名字
            try {
                long start = System.nanoTime();
                tj.start();
                tj.join();  //等待tj线程运行结束
                long end = System.nanoTime();
                System.out.println("耗时"+(end-start)/1000000+"毫秒");
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        System.out.println("主线程运行结束");//main函数的主线程运行结束
        }
    
    
    
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    “`这里写图片描述
    从程序运行结果可以看出,main方法代表的主线程在建立TestJoin tj 这个线程对象后,调用t.start()来运行线程,并调用了tj.join()来等待线程tj的完成,在线程tj完成了10次字符输出并结束线程后,主线程才计算了线程tj的耗时,并输出字符然结束主线程的运行。
    这里写图片描述
    这样理解会简单一些
    !!!!!把程序中的tj.join()这行程序注释掉,会发现
    如果没有使用Join方法,那么主线程就会在tj线程还未运行结束前就结束。

  • 相关阅读:
    MySql 踩坑小记
    Redux 实现过程的推演
    正则表达式的一些探索(偏JavaScript)
    [python工具] 如何使用plotly制作散列图
    使用epoll实现一个udp server && client
    python 实现一个简单tcp epoll socket
    [原创]差分放大器阻抗匹配计算+阻抗计算小工具
    将博客搬至CSDN
    [转]谈NAND Flash的底层结构和解析
    [原创]Fashion汽车定位器拆解
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/9232274.html
Copyright © 2020-2023  润新知