Topic: 一个310-035的线程题目,百思不得其解 |
Print this page |
1.一个310-035的线程题目,百思不得其解 | Copy to clipboard |
Posted by: ycxct Posted on: 2006-12-10 14:45 class ThreadTest extends Thread{ int n; ThreadTest(int n){this.n=n;} public void run(){ for(int i=0;i<3;i++){ System.out.print("T"+n+" "); } } } public class test{ test() { } public static void main(String[] args) { Thread t1=new ThreadTest(1); Thread t2=new ThreadTest(2); t1.setPriority(Thread.MAX_PRIORITY); t2.setPriority(Thread.MIN_PRIORITY); t1.start(); t2.start(); } } 结果怎么看都应该是"T1 T1 T1 T2 T2 T2",上机试验也是如此,可为什么标准答案给出"The behavior is not specified by the java Language Specification"(行为无法用java语言规则说明)呢? |
2.Re:一个310-035的线程题目,百思不得其解 [Re: ycxct] | Copy to clipboard |
Posted by: ycxct Posted on: 2006-12-10 14:46 望高手赐教,谢啦 |
3.Re:一个310-035的线程题目,百思不得其解 [Re: ycxct] | Copy to clipboard |
Posted by: cxp108 Posted on: 2006-12-11 09:06 在该题中的代码在一般情况下的确会得到T1 T1 T1 T2.....这样的结果,但是Specification中并没有任何强制要求得到该结果(即得不到该结果完全合法)。 也就是说线程的Priority设至最高也无法保证该线程可以一直独占CPU运行权,直至run()方法结束。设置Priority只能让JVM在使用线程调度算法对各线程进行调度时,给高Priority更多的机会,但这是没有任何强制性保证的。 |
4.Re:一个310-035的线程题目,百思不得其解 [Re: ycxct] | Copy to clipboard |
Posted by: ranchgirl Posted on: 2006-12-11 09:20 Different OS, you might get different results. The answer is correct. |
5.Re:一个310-035的线程题目,百思不得其解 [Re: ycxct] | Copy to clipboard |
Posted by: ycxct Posted on: 2006-12-11 12:08 哦,明白了,书上说过多线程工作不能保证某时段某一个线程一定能得到执行,想不到设置了优先级也不能完全保证,多谢两位了 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |