线程是否启动的问题 System.out.println("线程开始执行之前 --> " + t.isAlive()) ; // 判断是否启动先执行,而且是确定的。当t.start()启动一个线程后,后面的执行顺序就都不确定了,可以在t.start()后面暂停一秒试试看。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 main是一个线程,Thread t = new Thread(mt,"线程"); 线程的创建和启动、占用资源都是需要时间的。而你的main线程已经在运行,所以你看到的是main先运行,其实他们是同步运行的,如果main有耗时操作的话,你看的打印出的顺序就不一定了。 如果在// 以下的输出结果不确定System.out.println("代码执行之后 --> " + t.isAlive()) ; 之前增加Thread.sleep(1000);看到的就有可能是FALSE了。 接着6楼补充,// 以下的输出结果不确定System.out.println("代码执行之后 --> " + t.isAlive()); // 判断是否启动-----------------------------------------你的这个代码不确定,是因为:main执行了这句以后,你的t线程还没在执行完(当然isAlive就是true)除非你保证,在打印这句之前,t必须执行完毕!(那么可以用join来保证) 1.main所在的线程结束,和其它子线程是否结束没有任何关系。2.main所在的线程结束,demon线程是否退出也和它没有任何关系,而是看整个jvm进程内是否还有非demon线程,如果没有,整个jvm进程退出。换句话说jvm只要发现不再有非demon线程就退出,main线程是否退出没有任何关系。 start()方法之后线程是可运行的,但是未必被运行. 求10个数字可能的所有组合,只能用数组基本数据类型 求Java 编写的数字时钟的七段数码样式显示 全部分请教:何使用“tomcat的webdav”? 求一树形菜单,要求用数据库中数据做根节点和字节点 ireport 怎么连接 ms sql 数据库。出现如下问题: 两个数字交换值!!! 请教JAVA编程思想一书中的问题:很菜的问题…………请教高手 不知道怎样写这个正则表达式??? 在线等待:该怎么办? JMS请教! ! Column count doesn't match value count at row 1 Java中的强制类型转换?求大神解答!
System.out.println("代码执行之后 --> " + t.isAlive()) ; 之前增加Thread.sleep(1000);看到的就有可能是FALSE了。
// 以下的输出结果不确定
System.out.println("代码执行之后 --> " + t.isAlive()); // 判断是否启动-----------------------------------------
你的这个代码不确定,是因为:
main执行了这句以后,你的t线程还没在执行完(当然isAlive就是true)
除非你保证,在打印这句之前,t必须执行完毕!(那么可以用join来保证)
2.main所在的线程结束,demon线程是否退出也和它没有任何关系,而是看整个jvm进程内是否还有非
demon线程,如果没有,整个jvm进程退出。换句话说jvm只要发现不再有非demon线程就退出,main线程是否退出没有任何关系。