main线程执行顺序

问题描述

假如main有如下代码:public static void main(String[] args){for(int i=0;i<100;i++){Thread t = new Thread(); //具体代码不写了,反正就是创建一个新线程的意思t.start;}system.out.print("111");}想问下main是不是创建完100个线程之后才开始执行后面的 system.out.print("111");??我的理解是这样的:main这个线程是顺序执行的,而创建线程的程序放在了循环里面,所以应该是循环完之后才执行最后的打印语句。不知道理解的有没有错误。

解决方案

main函数是程序的主线程,在执行时按照顺序执行,你的描述是对滴,Thread t = new Thread(); 默认是用户级线程,在主线程中只是创建了他们。多个线程间的调度是有Thread来执行的,所以主线程只是创建了他们,在主线程执行完成后就是sysout以后如果用户级线程没有over 整个程序线程还是不会死的,单守候线程会随着主线程执行完成而死亡.

时间: 2024-09-17 04:25:08

main线程执行顺序的相关文章

多线程执行顺序诡异现象谈,你不知道的pthread_create

引文:学而时习之,不亦说乎.总是忙于具体项目,业务功能的实现:关于编程本身的技能都要有些生疏了,于是就选择了几个专题做了一次温习,重点放在了多线程和多进程上,跑了一个实例,居然有新的发现: (1)多个线程顺序创建的顺序=线程执行顺序吗? (2)多个线程顺序创建,回调函数执行顺序有规律吗? 示例: #include "apue.h" #include <pthread.h> void * thr_fn1(void *arg) { printf("thread 1 r

线程同步-linux可以用互斥锁控制多个线程的执行顺序吗?如何实现?

问题描述 linux可以用互斥锁控制多个线程的执行顺序吗?如何实现? 假设有三个线程:1.2.3,各自打印A,B,C.是否可以只用互斥锁就实现"ACBCACBC--"的打印输出?(不使用其他的线程同步方法) 解决方案 这种用自旋锁更好呀,而且实现更简单,顺序执行即可.

在Android中使用Handler和Thread线程执行后台操作

大家都知道,在PC上的应用程序当需要进行一些复杂的数据操作,但不需要界面UI的时候 ,我们会为应用程序专门写一个线程去执行这些复杂的数据操作.通过线程,可以执行例如 :数据处理.数据下载等比较耗时的操作,同时对用户的界面不会产生影响.在Android应用 程序开发中,同样会遇到这样的问题.当我们需要访问网络,从网上下载数据并显示在我们 的UI上时,就会启动后台线程去下载数据,下载线程执行完成后将结果返回给主用户界面线 程. 对于线程的控制,我们将介绍一个Handler类,使用该类可以对运行在不同

iOS应用程序中通过dispatch队列控制线程执行的方法_IOS

GCD编程的核心就是dispatch队列,dispatch block的执行最终都会放进某个队列中去进行,它类似NSOperationQueue但更复杂也更强大,并且可以嵌套使用.所以说,结合block实现的GCD,把函数闭包(Closure)的特性发挥得淋漓尽致. dispatch队列的生成可以有这几种方式: 1. dispatch_queue_t queue = dispatch_queue_create("com.dispatch.serial", DISPATCH_QUEUE_

关于Java中停止线程执行的方法总结

Java中停止线程执行的方法 一.暂停或停止线程的理论 在Java编程中,要暂停或停止当前正在运行的线程,有几种方法.对于把线程转入睡眠Sleep状态,使用Thread.sleep()是最正确的方式.或许有人会问,为什么不使用等待wait()或通知notify()?要知道,使用等待或通知都不是很好的方式.线程可以使用等待wait()实现被阻塞,这属于条件等待的方式,当条件满足后,又会从阻塞转为等待状态.尽管可以在等待wait()条件那里放一个超时设置,但等待wait()的设计目的不是这样的,等待

Java多线程--让主线程等待所有子线程执行完毕在执行_java

朋友让我帮忙写个程序从文本文档中导入数据到oracle数据库中,技术上没有什么难度,文档的格式都是固定的只要对应数据库中的字段解析就行了,关键在于性能. 数据量很大百万条记录,因此考虑到要用多线程并发执行,在写的过程中又遇到问题,我想统计所有子进程执行完毕总共的耗时,在第一个子进程创建前记录当前时间用System.currentTimeMillis()在最后一个子进程结束后记录当前时间,两次一减得到的时间差即为总共的用时,代码如下  long tStart = System.currentTim

JMeter基础之--元件的作用域与执行顺序

前面有介绍过jmeter的元件类别,对于新手来说,jmeter的 元件是还是不少的,如果我们按照每一个元件的每一个参数的含义去学习,无疑会降低学习性能测试的热情,就算我们熟悉了所有元件以及元件上的参数了,我们也 不知道如何将其组合成我们想要描述的性能测试.另一方面,我们点击每个节点上的元件都会出现类似或相同的菜单,他们的层级关系是什么样的.究竟这个元件放 在哪个层级的哪个位置才达到我们意愿. 如何更快速的入门jmeter,个人建议通过录制脚本的方式,快速的了解一个性能测试应该包括的元件以及它们的

举例说明Java中代码块的执行顺序_java

前言    今天在看Android ContentProvider实现的时候,突然想到了Java类在new的过程中,静态域.静态块.非静态域.非静态块.构造函数的执行顺序问题.其实这是一个很经典的问题,非常考察对Java基础知识的掌握程度.很多面试过程中相信也有这样的问题,趁着周末有时间复习一下. 结论    这里先把整理好的结论抛给大家,然后我在写个程序来验证我们的结论.在Java类被new的过程中,执行顺序如下:     实现自身的静态属性和静态代码块.(根据代码出现的顺序决定谁先执行)  

java普通代码执行顺序问题?

问题描述 java普通代码执行顺序问题? 其实我也是这样想的 不过那两天做js ,在js中调用了其他A方法,然后又调用了B方法由于A方法没执行完就跳到了B,我就想java如果按照顺序执行到a这步,要在循环中调用其他类中的方法 很长时间之后才能处理完,此时a下面的b方法是否会先执行. ---------------- 我在A类中调用了B类中的方法export,传入了5个list. 然后分别写了对5个list的操作,在所有操作的最后都分别有一个嵌套循环 for(int i=0;i<x;i++){ f