Cyh的博客

Email:kissyan4916@163.com
posts - 26, comments - 19, trackbacks - 0, articles - 220

线程6--线程优先级

Posted on 2009-06-02 20:45 啥都写点 阅读(196) 评论(0)  编辑  收藏 所属分类: J2SE
关键技术:
  • Java线程的优先级分为10个级别,数字越大,级别越高,默认为5。
  • Thread的setPriority实例方法为线程设置优先级,参数为int类型。
  • 对于两个同时启动的线程,大多数情况下优先级高的线程会比优先级低的线程先运行,当也有例外情况,完全取决于Java虚拟机的调度。

package book.thread;


public class Priority {
    
    
static class MyThread extends Thread{
        
private int ID = 0;
        
public MyThread(int id){
            
this.ID = id;
        }
        
public void run(){
            System.out.println(
"MyThread-" + this.ID + 
                    
" begin! Priority: " + this.getPriority());

            System.out.println(
"MyThread-" + this.ID + " end!");
        }
    }

    
public static void main(String[] args) {
        
//建立3个优先级不同的线程
        MyThread[] myThreads = new MyThread[3];
        
for (int i=0; i<3; i++){
            myThreads[i] 
= new MyThread(i+1);
            
//三个线程的优先级分别是1,4,7
            myThreads[i].setPriority(i*3+1);
        }
        
//按优先级从低到高启动线程
        for (int i=0; i<3; i++){
            myThreads[i].start();
        }
        
//先启动的线程不一定先运行,虚拟机会考虑线程的优先级,同等情况下,优先级高的线程先运行
    }
}



                                                                                                       --    学海无涯