Java中的线程优先级

关于线程的优先级:

  public class ThreadTest11{

    public static void main(String[] args){

       //设置主线程的优先级为1

       Thread.currentThread().setPriority(1);

 

       System.out.println("最高优先级”+Thread.MAX_PRIORITY);

       System.out.println("最低优先级”+Thread.MIN_PRIORITY);

       System.out.println("默认优先级”+Thread.NORM_PRIORITY);

       //获取当前线程对象,获取当前线程的优先级

       Thhread currentThread = Thread.currentThread();

       //main线程的默认优先级是:5

       System.out.println(currentThread.getName()+"线程的默认优先级是:"+currentThread.getPriority());

      

       Thread t = new Thread(new MyRunnable5());

       t.setPriority(10);

       t.setName("t");

       t.start();

       //优先级较高的,只是抢到的cpu时间片相对多一些。

      //大概率方向更偏向于优先级比较高的。

       for(int i=0;i<10000;i++){

          System.out.println(Thread.currentThread().getName()+"-->"+i);

       }

    }

}

 class MyRunnable5 implements Runnable{

     public void run(){

        //获取线程优先级

       System.out.println(Thread.currentThread().getName()+"线程的默认优先级:"+Thread.currentThread);

       for(int i=0;i<10000;i++){

          System.out.println(Thread.currentThread().getName()+"-->"+i);

       }

     }

  }

让位:当前线程暂停,回到就绪状态,让给其他线程

静态方法:Thread.yield();

 public class ThreadTest12{

    public static void main(String[] args){

        Thread t = new Thread(new MyRunnable6());

        t.setName("t");

        t.start();

        for(int i=0;i<10000;i++){

          System.out.println(Thread.currentThread().getName()+"-->"+i);

        }

    }

 }

 class MyRunnable6 implements Runnable{

     public void run(){

        for(int i=0;i<10000;i++){

          //每100个让位一次。

          if(i%100==0){

              Thread.yield();   //当前线程暂停一下,让位给主线程

          }

          System.out.println(Thread.currentThread().getName()+”-->"+i);

        }

     }

 }

线程合并

 public class ThreadTest13{

    public static void main(String[] args){

       System.out.println("main begin");

       Thread t = new Thread(new MyRunnable7());

        t.setName("t");

        t.start();

        //合并线程

        try{

           t.join();  //t合并到当前线程中,当前线程受阻塞,t线程执行直到结束

        }catch(InterruptedException e){

            e.printStackTrace();

        }

       System.out.println("main over");

     }

  }

 class MyRunnable7 implements Runnable{

   public void run(){

      for(int i=0;i<100;i++){

        System.out.println(Thread.currentThread().getName()+"-->"+i);

      }

    }

 }

你可能感兴趣的:(java,开发语言)