解决方案 »
- JAVA 调用linux命令 权限问题
- 关于属小母牛的问题 改了一下cow.grow();的位置,结果咋就不一样了啊 ,想不明白啊 (从网上找的一个例子)
- 一个接口的设计
- mysql 如何进入shell> 提示符下面
- 异常抛出
- 怎样把窗口最小化到任务栏托盘中??
- 用户注册界面用什么layout较好?
- 如何实现用java关闭 计算机啊!
- 各位高手:怎样用java applet 操纵DHTML ? 恳请指教,高分在所不惜,要多少加多少!!
- java为什么多线程往一个list中放值,但是放值的个数每次都不一样为什么
- 在这个类中,为什么第三个输出会被第四个输出覆盖掉,当把第四个输出删掉后,才能显示第三个输出值
- JAVA GUI中界面表格的数据库刷新问题。。
线程start调用以后 是相当于一个预备的状态 什么时候启动要系统管理线程的东西说了算 谁说了也不算!所以 说不准会出什么情况的 你每次运行的结果都是不确定的 输出语句 和run中的输出 说不定谁先执行
当然run中的顺序是定的 就是这个over的输出 说不定会插到哪个位置
public static void main(String[] args){
ThreadDemo t = new ThreadDemo();
Thread thread=new Thread(t);
thread.start();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("main thread is over");
}
public static class ThreadDemo extends Thread{
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("This is a Thread test"+i);
}
}
}
}没什么好迷惑的,你启动了一个线程,程序自己main方法执行会启动一个自己的线程(主线程) for循环的效率何等快,基本没有被捣乱的机会,代码如上,你让主线程睡一觉,就可以看出来了。如果还不清楚,就让你启动的线程每循环一次也睡一小会。
此时有2个线程,main和该线程,那么其实应当是两者竞争cpu
所以此时输出顺序不能确定~但是貌似有一定的机制保证当前线程更容易抢占到cpu吧