黑马程序员技术交流社区

标题: 多线程的优先级&yield()方法 [打印本页]

作者: jiaweizhang    时间: 2015-9-17 12:26
标题: 多线程的优先级&yield()方法
多线程的优先级&yield()方法:

1. toString() 方法: 返回该线程的字符串表示形式,包括线程名称、优先级和线程组

2. setPriority() 方法:更改线程的优先级。

   public final void setPriority(int newPriority)
   优先级参数设置值:1~10,10是最高,5是默认,1是最低
       
    Thread里面定义优先级常量:
    int MAX_PRIORITY
          线程可以具有的最高优先级。
    int MIN_PRIORITY
          线程可以具有的最低优先级。
    int NORM_PRIORITY  
             分配给线程的默认优先级。

  代码:
                Thread t1 = new Thread(new JoinDemo());
                Thread t2 = new Thread(new JoinDemo());
                t1.start();
                t1.setPriority(Thread.MAX_PRIORITY);        //等待该线程终止,当主线程长执行到这里时,主线程会处于等待状态,等t1线程执行完后才执行
                t2.start();

yield()方法:暂停当前正在执行的线程对象,并执行其他线程。

临时释放线程的执行权,达到线程平均运行的效果

public class JoinDemo implements Runnable{
                public void run(){
                        for(int i = 0; i < 70; i++){
                                System.out.println(Thread.currentThread().getName() + "-----"+i);
                                Thread.yield();                //暂停当前正在执行的线程对象,并执行其他线程。
                        }
                }
               
               
                public static void main(String args[]) throws InterruptedException{
                       
                        Thread t1 = new Thread(new JoinDemo());
                        Thread t2 = new Thread(new JoinDemo());
                        t1.start();
                        //t1.join();//等待该线程终止,当主线程长执行到这里时,主线程会处于等待状态,等t1线程执行完后才执行
                        //t1.setPriority(Thread.MAX_PRIORITY);         //设置线程优先级为最高
                        t2.start();
//                        for(int i = 0; i < 70; i++){
//                                System.out.println(Thread.currentThread().getName() + "----"+i);
//                        }
                }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2