zoukankan      html  css  js  c++  java
  • java join 方法的使用

    在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将早于子线程结束之前结束。这时,如果主线程想等待子线程执行完成之后再结束,比如子线程处理一个数据,主线程要取得这个数据中的值,就要用到join()方法了,方法join()的作用是等待线程对象被销毁。

    代码示例:

    package com.test;
    
    public class TestJoin extends Thread {
        @Override
        public void run() {
            try {
                int secondValue = (int)(Math.random() * 10000);
                System.out.println(secondValue);
                Thread.sleep(secondValue);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    package com.test;
    
    public class Run {
        
        public static void main(String[] args) {
            
            try {
                TestJoin join = new TestJoin();
                join.start();
                join.join();
                System.out.println("我想当线程对象执行完毕后我再执行");
                    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    运行结果:
    7694
    我相当线程对象执行完毕后我再执行

    ps:如果把Run.java中的join.join()方法注释掉, 则会先打印 “我想当线程对象执行完毕后我再执行”

    方法join与异常:

      在join过程中,如果当前线程对象被中断,则当前线程出现异常。

    join(long)中的参数是设定等待时间。

    方法join(long)与sleep(long)的区别:

      方法join(long)的功能个在内部是使用wait(long)方法来实现的,所以join(long)方法具有释放锁的特点。而Thread.sleep(long)方法却不释放锁.

  • 相关阅读:
    JAVA005-基本数据类型变量的存储
    JAVA003-变量、数据类型
    Python_pandas数据处理_学习
    python_性能FPS
    DB_004_创建表
    DB_003_关系数据库标准语言(SQL)
    DB_002_数据库的创建和管理
    DB_001_概念模型设计
    虚幻蓝图学习笔记 简单VR功能实现
    虚幻蓝图学习笔记 制作第一人称(实现功能:捡枪,换枪,扔枪,仍炸弹等)(一)
  • 原文地址:https://www.cnblogs.com/gouge/p/9118473.html
Copyright © 2011-2022 走看看