线程流程理解

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

时间: 2024-08-05 21:34:43

线程流程理解的相关文章

【C/C++多线程编程之五】pthread线程深入理解

多线程编程之pthread线程深入理解  Pthread是 POSIX threads 的简称,是POSIX的线程标准. 前几篇博客已经能给你初步的多线程概念.在进一步学习线程同步等多线程核心知识之前,须要对多线程深入的理解.非常多人忽略或者回避这部分内容,直接的问题是学习者无法把握多线程编程的内在原理,理解的层次太浅.           1.进程资源:                      进程资源有存储资源与其它资源.其它资源包括环境变量.地址,文件等.存储资源.进程的内存分配,博客[

mirantis fuel puppet执行顺序 和 对整个项目代码的执行流程理解

stage执行顺序 stage {'zero': } -> stage {'first': } -> stage {'openstack-custom-repo': } -> stage {'netconfig': } -> stage {'corosync_setup': } -> stage {'openstack-firewall': } -> Stage['main'] 1.class {'begin_deployment': stage => 'zero

【转】关于Java的Daemon线程的理解

原文地址:http://www.cnblogs.com/ChrisWang/archive/2009/11/28/1612815.html 关于Java的Daemon线程的理解 网上对Java的Daemon线程的说法很多,看的人头晕. 所以自己就来总结一下: Java语言自己可以创建两种进程“用户线程”和“守护线程” 用户线程:就是我们平时创建的普通线程. 守护线程:主要是用来服务用户线程. 那么如何来区分这两种线程呢? 其实在JDK的文档中已经说明的很清楚了: * The Java Virtu

关于gan的流程理解

关于gan的流程理解, 最近再看cyclegan所以慢慢来看,最后了解了原理来跑代码就好 先说第一点: 架构 gan的架构就是两个重要的点:1 生成器 2 分辨器 生成器的作用就是生成假的图片 分辨器的作用就是在给一个正确的图片和一个生成的假的图片之后,他可以把正确的找出来 由此,其实我这里提出好多问题: 1 如何生成假的图片:反卷积 2 如何判断,好像是一个二分类,两个图片都给过去,<0.5就是假的,>0.5就是真的,当然这个0.x就是sigmoid(wx+b)(也就是距离的sigmoid值

python 进程线程简单理解

简单的理解 1.线程:最小的执行单元:进程:最小的资源单元 2.一个程序至少有一个进程,一个进程至少有一个线程(线程可以理解为线程的容器) 3.进程在执行过程中拥有独立的内存单元,而多个线程共享内存 4.每一个独立的线程都有 程序的入口,顺序执行的序列和程序出口,但是线程不能独立执行,必须由应用程序提供多个线程执行控制 5.进程是系统进行资源分配和调度的一个独立单元 多线程的代码开启 import threading import time def sing(): print("begin to

从Activity的启动流程理解Binder

简述 关于Activity启动流程和Binder的文章很多,大多数是分开来讲的,本文将二者结合起来,着重分析启动流程中跨进程方面的细节,其实,启动流程看似调用繁多,主要是复杂在Activity栈管理等方面,如果将其看作一个整体,整个启动流程就简单很多.在启动流程中,App和AMS的跨进程调用是其中的重点,理解了这个,会加深对Binder和启动流程的理解认知,也能窥到Framework层的冰山一角.另外我也发现,很多文章在讲启动流程的时候,关于ActivityMangagerService进程如何

关于线程的理解

1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒.Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点. 2) 线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务.不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间.别把它

线程再理解

线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元. 一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成. 另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源, 但它可与同属一个进程的其它线程共享进程所拥有的全部资源. 一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行. 由于线程之间的相互制约,致使线程在运行中呈现出间断性.线程也有就绪

进程和线程的理解

一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程.比如在Windows系统中,一个运行的exe就是一个进程. 线程是指进程中的一个执行流程,一个进程中可以运行多个线程.比如java.exe进程中可以运行很多线程.线程总是属于某个进程,进程中的多个线程共享进程的内存. “同时”执行是人的感觉,在线程之间实际上轮换执行. 二.Java中的线程 在Java中,