线程到底什么时候启动呢?
有时候子线程马上就启动了,有时候在主线程执行了好多行代码之后子线程还三三两两的来启动几个。。。
按我的测试对子线程的启动有了一定认识,但我仍然觉得认识很肤浅,希望看到更深入的见解
/**
* 测试线程什么时候启动。
* 我的观点:
* 1、调用线程的start()方法之后,就把线程放在等待队列之中,等待获得CPU时间片执行,
* 但等待队列中的线程获得CPU时间并没有绝对的先后顺序,谁抢到了CPU,谁就先执行。
* 2、如果在主线程中创建好了子线程之后,此时此刻我想让它们全部启动,我们就让主线程sleep(),
* 睡眠的时间根据你估计所有的子线程启动需要的时间。如果只有简单的顺序执行代码的话,睡眠100毫秒就够了。
* @author ayis
*
* Nov 29, 2008
*/
public class TestThreadWhenStart {
public static void main(String args[]){
try {
System.out.println("测试开始!");
testThreadStart();
// 主线程睡眠足够长时间,让其它的线程都启动
Thread.sleep(100);
System.out.println("测试结束!");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 启动5个子线程
*/
public static void testThreadStart(){
for(int i=0 ; i< 5 ; i++){
final int j=i;
new Thread(
new Runnable(){
public void run(){
System.out.println("线程: "+j+" 已启动!");
}
}
).start();
}
}
}
输出的结果是:
测试开始!
线程: 0 已启动!
线程: 2 已启动!
线程: 4 已启动!
线程: 1 已启动!
线程: 3 已启动!
测试结束!
如果注释掉Thread.sleep(100),再次执行,就出现这样的结果:
测试开始!
线程: 0 已启动!
线程: 2 已启动!
线程: 1 已启动!
测试结束!
线程: 3 已启动!
线程: 4 已启动!
有子线程在主线程结束之后才启动。如果让主线程睡眠一下,再执行,(就是代码中的情况),就能保证在子线程都启动后,主线程才继续执行。
正是上面所说的很肤浅,大家多批评批评
分享到:
相关推荐
多线程启动.java多线程启动.java多线程启动.java多线程启动.java
Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的调度-...
Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java线程:线程栈模型与线程的变量 12 Java线程:线程的调度-休眠 13 Java线程:线程的调度-优先级 16 Java线程:线程的调度-让步 19 Java线程:线程的...
Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程...
JAVA 线程中启动线程,自己写的一个demo,欢迎参考
java 启动线程 java 启动线程 java 启动线程
《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口的线程 线程的生命周期 线程命名 ...
N个线程从队列中取出数据,找到其在子表中的数据 对子表中的数据开3种线程:读,发email,标记状态 N个线程对完成的A表数据做最后处理 支持大数据量跑批,就是个例子,本来是公司发送促销邮件用的,欢迎提意见和建议...
本文档 描述怎样定时 启动一个线程任务 并加了注释 希望对你有帮助
java多线程每个线程挨着打印ABC的4种实现方式,有4个线程t1、t2、t3、t4,t1打印A后t2打印A再t3打印A再t4打印A,然后从新回到t1打印B再t2打印B...t4打印B... 4个线程轮流打印abc... 一个线程可以理解为一个人,打印...
Java中的多线程有三种实现方式: 1.继承Thread类,重写run方法。Thread本质上也是一个实现了Runnable的实例,他代表一个线程的实例,并且启动线程的唯一方法就是通过Thread类的start方法。 2.实现Runnable接口,并...
Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的调度-...
本书浅显易懂的介绍了JAVA线程相关的设计模式,通过程序范例和UML图示来一一解说,书中代码的重要部分加了标注以使读者更加容易理解,再加上图文并茂,对于初学者还是程序设计高手来说,这都是一本学习和认识JAVA...
锁定排序 3.6 线程优先级 3.7 监控程序线程 3.8 在应用程序中加入线程 3.9 线程控制 3.9.1 线程启动 3.9.2 线程休眠 3.9.3 线程挂起 3.9.4 线程恢复 3.9.5 线程停止 3.9.6...
Java编写程序都运行在在Java虚拟机(JVM)中,在JVM的内部,程序的多任务是通过线程来实现的。每用java命令启动一个java应用程序,就会启动一个JVM进程。在同一个JVM进程中,有且只有一个进程,就是它自己。在这个...
Java线程是Java语言中一个非常重要的部分,Java5之前,多线程的语言支持还是比较弱的,内容也较少,写一个复杂的多线程程序是相当有挑战性的。 在Java5以后,Java对多线程做了很多扩展,扩展部分称之为并发包。这...
java线程的创建于启动,适合初学者学习,讲述的还算比较详细。
Java线程:创建与启动 Java线程:线程状态的转换 Java线程:线程的同步与锁 一、同步问题提出 二、同步和锁定 三、静态方法同步 四、如果线程不能不能获得锁会怎么样 五、何时需要同步 六、线程安全类 七、...