A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jiaweizhang 中级黑马   /  2015-9-17 12:26  /  300 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多线程的优先级&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);
//                        }
                }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马