黑马程序员技术交流社区
标题:
多线程问题
[打印本页]
作者:
zl918
时间:
2012-1-8 17:13
标题:
多线程问题
本帖最后由 zl918 于 2012-1-14 10:41 编辑
class MyThread implements Runnable {
public void run() {
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
System.out
.println(Thread.currentThread().getName() + "运行,i = " + i);
}
}
};
public class ThreadSleepDemo {
public static void main(String args[]) {
MyThread mt1 = new MyThread();
Thread t1 = new Thread(mt1, "线程");
t1.start();
System.out.println("ThreadSleepDemo");
}
}
复制代码
在主方法中System.out.println("ThreadSleepDemo")在启动线程之后,但是运行结果是:
ThreadSleepDemo
线程运行,i = 0
线程运行,i = 1
线程运行,i = 2
线程运行,i = 3
线程运行,i = 4
先运行System后运行start方法。
为什么呢?
是System的优先级高吗?
该贴已经同步到 zl918的微博
作者:
为梦而战
时间:
2012-1-8 17:36
main也是一个线程,而且是主线程,当你调用 t1.start;启动自己写的线程后,因为你在自己写的线程写了代码:Thread.sleep(100);也就是这个线程启动后就处于睡眠状态,这里,执行权就到了主线程main了,主线程执行System.out.println("ThreadSleepDemo");,然后自己写的线程睡眠时间到,再执行自己的线程体。所以才是你那个结果,你要是在线程体run(){}里,先让它执行点其它的东西,而不是Sleep()或Wait(),再看结果。这个与System的优先级没有关系!
作者:
卢其龙
时间:
2012-1-8 18:25
在我理解中从main启动后所有的线程没有特殊安排默认优先级都为 5. 优先级 1--10
所以System的优先级高吗? 肯定不是
为什么正如楼上所说
作者:
chocolate
时间:
2012-1-8 18:43
恩 楼上的 说的 比较能全面点 我也就不多说了 你会看的懂的···! 努力点!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2