image.png

    /*
    线程的优先级:
    1.
    MAX_PRIORITY:10
    MIN_PRIORITY:1
    NORM_PRIORITY:5 —>默认优先级

    2.如何获取和设置当前线程的优先级:
    getPriority():获取线程的优先级
    setPriority(int p):设置线程的优先级

    说明:高优先级的线程要抢占低优先级的线程CPU的执行权。但是只是从概率上讲,高优先级的线程
    高概率的情况下被执行。并不意味着只有当高优先级的线程执行完以后,低优先级的线程才
    执行。

    /

    1. package com.atguigu.java1;
    2. /**
    3. * 线程的优先级:
    4. * 1.
    5. * MAX_PRIORITY:10
    6. * MIN_PRIORITY:1
    7. * NORM_PRIORITY:5 -->默认优先级
    8. *
    9. * 2.如何获取和设置当前线程的优先级:
    10. * getPriority():获取线程的优先级
    11. * setPriority(int p):设置线程的优先级
    12. *
    13. * 说明:高优先级的线程要抢占低优先级的线程CPU的执行权。但是只是从概率上讲,高优先级的线程
    14. * 高概率的情况下被执行。并不意味着只有当高优先级的线程执行完以后,低优先级的线程才
    15. * 执行。
    16. *
    17. * @author Dxkstart
    18. * @create 2021-05-06 16:14
    19. */
    20. public class PriorityTest {
    21. public static void main(String[] args) {
    22. MyThread2 my = new MyThread2();
    23. //设置线程优先级
    24. my.setPriority(8);//注意格式
    25. my.start();//分线程1
    26. //如下的方法仍然是main线程中执行的
    27. Thread.currentThread().setPriority(2);
    28. for (int i = 0; i <= 200; i++) {
    29. if (i % 2 == 0) {
    30. System.out.println(Thread.currentThread().getName() +":"+
    31. Thread.currentThread().getPriority() +
    32. ":" + i );
    33. }
    34. }
    35. }
    36. }
    37. class MyThread2 extends Thread {
    38. @Override
    39. public void run() {
    40. for (int i = 0; i <= 200; i++) {
    41. if (i % 2 == 0) {
    42. System.out.println(Thread.currentThread().getName() +":"+
    43. Thread.currentThread().getPriority() + ":" + i);
    44. }
    45. }
    46. }
    47. }