请问关于线程优先级的有关问题
请教关于线程优先级的问题
//请问执行结果为什么不是先执行优先级最高的,而是随机执行,好像没设优先级似地
public class ThreadTest
{
public static void main( String args [] )
{
Thread t1 = new MyThread("T1");
t1.setPriority( Thread.MIN_PRIORITY ); //设置优先级为最小
t1.start( );
Thread t2 = new MyThread("T2");
t2.setPriority( Thread.MAX_PRIORITY ); //设置优先级为最大
t2.start( );
Thread t3 = new MyThread("T3");
t3.setPriority( Thread.MAX_PRIORITY ); //设置优先级为最大
t3.start( );
}
}
class MyThread extends Thread {
String message;
MyThread ( String message )
{ this.message = message;}
public void run()
{
for ( int i=0; i<3; i++ )
System.out.println( message+":第"+(i+1)+"次,优先级="+getPriority() ); //获得优先级
}
}
结果如下:
T1:第1次,优先级=1
T3:第1次,优先级=10
T2:第1次,优先级=10
T3:第2次,优先级=10
T1:第2次,优先级=1
T3:第3次,优先级=10
T2:第2次,优先级=10
T2:第3次,优先级=10
T1:第3次,优先级=1
------最佳解决方案--------------------
循环次数才少了。。。。很难看出效果来的。。。
把循环次数尽量放大,然后看谁先循环完毕。
另外,优先级没有决定性作用,是相对而言的,且也存在调度上的概率问题,所以要大量线程和长时间运行才能体现效果。
------其他解决方案--------------------
真的耶,太厉害了
//请问执行结果为什么不是先执行优先级最高的,而是随机执行,好像没设优先级似地
public class ThreadTest
{
public static void main( String args [] )
{
Thread t1 = new MyThread("T1");
t1.setPriority( Thread.MIN_PRIORITY ); //设置优先级为最小
t1.start( );
Thread t2 = new MyThread("T2");
t2.setPriority( Thread.MAX_PRIORITY ); //设置优先级为最大
t2.start( );
Thread t3 = new MyThread("T3");
t3.setPriority( Thread.MAX_PRIORITY ); //设置优先级为最大
t3.start( );
}
}
class MyThread extends Thread {
String message;
MyThread ( String message )
{ this.message = message;}
public void run()
{
for ( int i=0; i<3; i++ )
System.out.println( message+":第"+(i+1)+"次,优先级="+getPriority() ); //获得优先级
}
}
结果如下:
T1:第1次,优先级=1
T3:第1次,优先级=10
T2:第1次,优先级=10
T3:第2次,优先级=10
T1:第2次,优先级=1
T3:第3次,优先级=10
T2:第2次,优先级=10
T2:第3次,优先级=10
T1:第3次,优先级=1
------最佳解决方案--------------------
循环次数才少了。。。。很难看出效果来的。。。
把循环次数尽量放大,然后看谁先循环完毕。
另外,优先级没有决定性作用,是相对而言的,且也存在调度上的概率问题,所以要大量线程和长时间运行才能体现效果。
------其他解决方案--------------------
真的耶,太厉害了