• 线程流程理解


    1.只要线程thread.start()执行了,程序立刻就多了一个执行的分支。并且这个分支会单独持续的运行下去。

    thread.start()后面的代码会继续沿着另一条分支向下执行。

    也就是,两条分支,各自持续运行

    比如:

    复制代码
    public class AppMain {
    
        public static void main(String[] args) throws InterruptedException {
            // TODO Auto-generated method stub
            long start = System.currentTimeMillis() ;
            System.out.println();
            ArrayList<Thread> arrayList = new ArrayList<>();
            for(int i = 0;i<100;i++)
            {
                myThread m1 =  new myThread();
                        m1.start();
                        m1.join();
                myThread2 m2 = new myThread2();
                        m2.start();
                        m2.join();
            }
            long end = System.currentTimeMillis();
            long endure = end-start;
            System.out.println("耗时:"+endure);
        }
    
    }
    复制代码

    输出:

    Thread-172 :1111 : 111
    Thread-173 :2222 : 222
    Thread-174 :1111 : 111
    Thread-175 :2222 : 222
    Thread-176 :1111 : 111
    Thread-177 :2222 : 222
    Thread-178 :1111 : 111
    Thread-179 :2222 : 222
    Thread-180 :1111 : 111
    Thread-181 :2222 : 222
    Thread-182 :1111 : 111
    Thread-183 :2222 : 222
    Thread-184 :1111 : 111
    Thread-185 :2222 : 222
    Thread-186 :1111 : 111
    Thread-187 :2222 : 222
    Thread-188 :1111 : 111
    Thread-189 :2222 : 222
    Thread-190 :1111 : 111
    Thread-191 :2222 : 222
    Thread-192 :1111 : 111
    Thread-193 :2222 : 222
    Thread-194 :1111 : 111
    Thread-195 :2222 : 222
    Thread-196 :1111 : 111
    Thread-197 :2222 : 222
    Thread-198 :1111 : 111
    Thread-199 :2222 : 222
    耗时:68

    如果不采用join()方法的话,会先执行完main线程,子线程继续执行。则不会正确打印出耗时时间

    输出如下:

    Thread-181 :2222 : 222
    Thread-182 :1111 : 111
    Thread-183 :2222 : 222
    Thread-184 :1111 : 111
    Thread-185 :2222 : 222
    Thread-186 :1111 : 111
    Thread-187 :2222 : 222
    Thread-188 :1111 : 111
    Thread-189 :2222 : 222
    Thread-190 :1111 : 111

    耗时:68----------------------------------会发现主线程先执行完了
    Thread-191 :2222 : 222
    Thread-192 :1111 : 111
    Thread-193 :2222 : 222
    Thread-194 :1111 : 111
    Thread-195 :2222 : 222
    Thread-196 :1111 : 111
    Thread-197 :2222 : 222
    Thread-198 :1111 : 111
    Thread-199 :2222 : 222

  • 相关阅读:
    interbase C++Builder 简单例子
    delphi代码实现创建dump文件
    在Mac OSX下使用ssh建立隧道(在Windows下建立隧道可以使用putty,其间会用到ppk文件)
    为什么豌豆荚们没能成为伟大的公司?
    解读雷军演讲,小米能否借“科技业的无印良品”反弹?(坚硬和纯洁的心,才能把这个事情干好)
    SOCKET网络编程5
    SQL Server 跨网段(跨机房)复制
    Erlang千万级用户游戏框架(Openpoker)源码文件分析清单
    异步编程
    代码性能不高
  • 原文地址:https://www.cnblogs.com/panxuejun/p/6133251.html
Copyright © 2020-2023  润新知