• 线程的状态


    线程的5种状态:

    http://blog.csdn.net/pange1991/article/details/53860651

    http://www.cnblogs.com/xll1025/p/6415283.html

    join()方法详解:

    http://blog.csdn.net/studyvcmfc/article/details/7426385

    解释一下,是主线程等待子线程的终止。也就是在子线程调用了join()方法后面的代码,只有等到子线程结束了才能执行。

    自从接触Java多线程,一直对Join理解不了。JDK是这样说的:join public final void join(long millis)throws InterruptedException Waits at most millis milliseconds for this thread to die. A timeout of 0 means to wait forever.大家能理解吗? 字面意思是等待一段时间直到这个线程死亡,我的疑问是那个线程,是它本身的线程还是调用它的线程的,上代码: 

    package concurrentstudy;
    /**
     *
     * @author vma
     */
    public class JoinTest {
        public static void main(String[] args) {
            Thread t = new Thread(new RunnableImpl());
            t.start();
            try {
                t.join(1000);
                System.out.println("joinFinish");
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
         
            }
        }
    }
    class RunnableImpl implements Runnable {

        @Override
        public void run() {
            try {
                System.out.println("Begin sleep");
                Thread.sleep(1000);
               System.out.println("End sleep");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    }

    结果是:
    Begin sleep
    End sleep
    joinFinish
    明白了吧,当main线程调用t.join时,main线程等待t线程,等待时间是1000,如果t线程Sleep 2000呢 
     public void run() {
            try {
                System.out.println("Begin sleep");
                // Thread.sleep(1000);
                Thread.sleep(2000);
               System.out.println("End sleep");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    结果是:
    Begin sleep
    joinFinish
    End sleep

  • 相关阅读:
    .Net5开发MQTT服务器
    使用Docker搭建MQTT服务器
    使用Docker搭建MQTT服务器
    在Raspberry Pi上安装Docker
    阿里云=>RHSA-2019:1884-中危: libssh2 安全更新
    MediaAPIController
    CentOS7 mysql支持中文
    设置centos7中的mysql5.7不区分表名大小写有关操作
    CentOS7 安装mysql(YUM源方式)
    centos7下安装nginx
  • 原文地址:https://www.cnblogs.com/smuxiaolei/p/7760912.html
Copyright © 2020-2023  润新知