zoukankan      html  css  js  c++  java
  • Java线程优先级(Priority)

    1、线程一

     1 package com.cn.donleo.thread.priority;
     2 
     3 import java.util.concurrent.Callable;
     4 
     5 /**
     6  * @author liangd
     7  * date 2020-10-31 15:25
     8  * code
     9  */
    10 public class MyThreadOne extends Thread {
    11 
    12     MyThreadOne(String name) {
    13         super(name);
    14     }
    15 
    16     @Override
    17     public void run() {
    18         for (int i = 0; i < 20; i++) {
    19             System.out.println("第" + i + "个 MyThread: " + getName());
    20         }
    21         System.out.println("线程1的优先级:" + this.getPriority());
    22         MyThreadTwo myThreadTwo = new MyThreadTwo();
    23         myThreadTwo.start();
    24     }
    25 }

    2、线程二

     1 package com.cn.donleo.thread.priority;
     2 
     3 /**
     4  * @author liangd
     5  * date 2020-10-31 15:20
     6  * code
     7  */
     8 public class MyThreadTwo extends Thread {
     9     @Override
    10     public void run() {
    11         System.out.println("线程2的优先级:"+this.getPriority());
    12     }
    13 }

    3、线程三

     1 package com.cn.donleo.thread.priority;
     2 
     3 
     4 /**
     5  * @author liangd
     6  * date 2020-10-31 17:01
     7  * code
     8  */
     9 public class MyThreadThree extends Thread {
    10 
    11     MyThreadThree(String name) {
    12         super(name);
    13     }
    14 
    15     @Override
    16     public void run() {
    17         //获取系统当前时间
    18         Long start = System.currentTimeMillis();
    19         StringBuilder stringBuilder = new StringBuilder();
    20         //设置时间间隔
    21         MyThreadFour.getTime(stringBuilder);
    22         Long end = System.currentTimeMillis();
    23         System.out.println("线程3执行时间:" + (end - start));
    24     }
    25 }

    4、线程四

     1 package com.cn.donleo.thread.priority;
     2 
     3 import java.util.Random;
     4 
     5 /**
     6  * @author liangd
     7  * date 2020-10-31 17:17
     8  * code
     9  */
    10 public class MyThreadFour extends Thread{
    11 
    12     MyThreadFour(String name) {
    13         super(name);
    14     }
    15 
    16     @Override
    17     public void run() {
    18         Long start = System.currentTimeMillis();
    19         StringBuilder stringBuilder = new StringBuilder();
    20         getTime(stringBuilder);
    21         Long end = System.currentTimeMillis();
    22         System.out.println("线程4执行时间:" + (end - start));
    23     }
    24 
    25     /**
    26      * 设置时间间隔
    27      * @param stringBuilder
    28      */
    29     static void getTime(StringBuilder stringBuilder) {
    30         for (int i = 0; i < 20; i++) {
    31             for (int j = 0; j < 50000; j++) {
    32                 Random random = new Random();
    33                 random.nextInt();
    34                 stringBuilder.append(i);
    35             }
    36         }
    37     }
    38 }

    5、测试线程优先级

     1 package com.cn.donleo.thread.priority;
     2 
     3 /**
     4  * @author liangd
     5  * date 2020-10-31 16:49
     6  * code 线程优先级测试
     7  */
     8 public class TestPriority {
     9     /**
    10      * 一、优先级
    11      *  1、设置优先级 setPriority(8)
    12      *  2、得到优先级 getPriority()
    13      *  3、线程是有优先级的,也就是线程的执行顺序
    14      *     MAX_PRIORITY和MIN_PRIORITY分别是最高级10和最低级1,当然还有默认级别是5;
    15      *
    16      * 二、线程优先级特性
    17      *  1、线程优先级的继承特性:
    18      *     也就是如果线程A启动线程B,那么线程A和B的优先级是一样的
    19      *  2、线程优先级的规则性:
    20      *     即线程会优先级的大小顺序执行,但是不一定是优先级较大的先执行完
    21      *  3、线程优先级的随机特性
    22      *
    23      * @param args
    24      */
    25     public static void main(String[] args){
    26         System.out.println(Thread.currentThread().getPriority());
    27         //设置线程优先级,范围0-10,数值越大,优先执行的概率越大
    28         Thread.currentThread().setPriority(8);
    29         //线程2放在线程1方法里面执行,只需启动线程1
    30 //        MyThreadOne threadOne = new MyThreadOne("线程1");
    31         //设置线程3的优先级,执行速度概率应该比线程1和线程2更快
    32 //        threadOne.start();
    33 
    34 
    35         for (int i=0;i<5 ;i++){
    36             MyThreadThree threadThree = new MyThreadThree("线程3");
    37             threadThree.setPriority(1);
    38             threadThree.start();
    39             MyThreadFour threadFour = new MyThreadFour("线程4");
    40             threadFour.setPriority(10);
    41             threadFour.start();
    42         }
    43 
    44 
    45 
    46     }
    47 }
    作者:donleo123
    本文如对您有帮助,还请多推荐下此文,如有错误欢迎指正,相互学习,共同进步。
  • 相关阅读:
    ABP框架插件开发
    ionic 向路由中的templateUrl(模板页)传值
    EFT4 生成实体类
    mvc 下的 signalR使用小结
    利用javascript实现页面截图
    linux定时任务php
    PHPCMSV9的CKEDITOR编辑器增加行距
    上传网站后建议执行:chown www:www -R /path/to/dir 对网站目录进行权限设置,/path/to/dir替换为你网站目录。
    centOS7下安装GUI图形界面
    虚拟机中的Linux安装VMware Tools的方法
  • 原文地址:https://www.cnblogs.com/donleo123/p/14069904.html
Copyright © 2011-2022 走看看