黑马程序员技术交流社区
标题:
多线程共用一个线程体的问题
[打印本页]
作者:
saiqqww234
时间:
2016-5-2 17:59
标题:
多线程共用一个线程体的问题
public class myThread implements Runnable {
public void run() {
int i = 100;
while(true){
System.out.println(Thread.currentThread().getName() + ":" + i);
i--;
Thread.yield();
if (i<0) {
break;
}
}
}
}
public class test {
public static void main(String[] args) {
myThread mt = new myThread();
Thread t1 = new Thread(mt);
Thread t2 = new Thread(mt);
t1.setName("线程1");
t2.setName("线程2");
t1.start();
t2.start();
}
}
代码示例如上,我理想的运行结果应该是t1 t2交替运行
比如,
线程1:100
线程1:99
线程1:98
线程2:97
线程2:96
线程1:95
但是在eclipse中却是
线程1:100
线程2:100
线程2:99
线程2:98
线程1:99
线程2:97
线程2:96
线程1:98
线程2:95
线程2:94
线程1:97
线程1:96
线程2:93
线程1:95
线程2:92
线程1:94
线程2:91
线程1:93
线程2:90
。。。。。
这是什么原因呢?
线程释放CPU再重新竞争也应该是运行到thread.yield()才会发生吧?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2