首页 > 其他分享 >day 22- 线程的礼让,优先级,守护线程

day 22- 线程的礼让,优先级,守护线程

时间:2022-11-08 17:24:00浏览次数:50  
标签:myPriority Thread 22 day start 线程 new public

线程的礼让

利用Thread.yield()使线程进行礼让

礼让的概念:

  1. 礼让线程,让当前正在执行的线程暂停,但并不是阻塞

  2. 将线程从运行状态转化为就绪状态

  3. 线程礼让是由cpu调度,并不一定成功

 
 1 public class TestYield {
 2  ​
 3      public static void main(String[] args) {
 4          MyYield myYield = new MyYield();
 5          new Thread(myYield,"a").start();
 6          new Thread(myYield,"b").start();
 7      }
 8  }
 9  ​
10  class MyYield implements Runnable{
11  ​
12      @Override
13      public void run() {
14          System.out.println(Thread.currentThread().getName()+ "线程开始执行");
15          Thread.yield();//礼让
16          System.out.println(Thread.currentThread().getName()+ "线程停止执行");
17      }
18  }

 

线程的优先级

设置线程的优先级

更改线程的优先级

其中main线程的优先级默认为5

 
 1 public class TestPriority {
 2      public static void main(String[] args) {
 3          //主线程优先级
 4          System.out.println(Thread.currentThread().getName()+"->"+Thread.currentThread().getPriority());
 5          MyPriority myPriority = new MyPriority();
 6          Thread t1 = new Thread(myPriority);
 7          Thread t2 = new Thread(myPriority);
 8          Thread t3 = new Thread(myPriority);
 9          Thread t4 = new Thread(myPriority);
10          Thread t5 = new Thread(myPriority);
11          Thread t6 = new Thread(myPriority);
12          Thread t7 = new Thread(myPriority);
13  ​
14          //设置优先级,在启动
15          t1.start();
16  ​
17          t2.setPriority(1);
18          t2.start();
19  ​
20          t3.setPriority(4);
21          t3.start();
22  ​
23          t4.setPriority(Thread.MAX_PRIORITY);
24          t4.start();
25  ​
26  //        t5.setPriority(-1);
27  //        t5.start();
28  //
29  //        t6.setPriority(11);
30  //        t6.start();
31      }
32  }
33  class MyPriority implements Runnable{
34  ​
35      @Override
36      public void run() {
37          System.out.println(Thread.currentThread().getName()+"->"+Thread.currentThread().getPriority());
38  ​
39      }
40  }

 

守护线程

线程分为用户线程和守护线程

虚拟机必须确保用户线程执行完毕

但虚拟机不用等待守护线程执行完毕

守护线程一般包括:后台记录日志,监控内存,垃圾回收等待等等

 1  //测试守护线程
 2  public class TestDaemon {
 3      public static void main(String[] args) {
 4          God god = new God();
 5          You you = new You();
 6  ​
 7  ​
 8          Thread thread = new Thread(god);
 9          thread.setDaemon(true);//默认是false,正常线程都是用户线程
10          thread.start();//god线程启动
11          new Thread(you).start();//you启动
12      }
13  }
14  //GOD
15  class God implements Runnable{
16      @Override
17      public void run() {
18          while (true){
19              System.out.println("god bless you");
20          }
21      }
22  }
23  ​
24  //YOU
25  class You implements Runnable{
26      @Override
27      public void run() {
28          for (int i = 0; i < 36500; i++) {
29              System.out.println("alive");
30          }
31          System.out.println("=====goodbye world====");
32      }
33  }

 

将god线程设置为守护线程

虚拟机不必等待god线程结束

在you线程正常结束后即可结束程序

标签:myPriority,Thread,22,day,start,线程,new,public
From: https://www.cnblogs.com/GUGUZIZI/p/16870415.html

相关文章

  • javascript中数组的22种方法
    数组总共有22种方法,本文将其分为对象继承方法、数组转换方法、栈和队列方法、数组排序方法、数组拼接方法、创建子数组方法、数组删改方法、数组位置方法、数组归并方法和数......
  • 读者-写者(多线程)
    目录问题描述问题分析伪代码伪代码描述相关函数代码实现问题描述有读者和写者两个并发进程,共享一个文件,当两个或以上的读进程同时访问共享数据时不会产生副作用,但若某......
  • day30面向对象(4)
    目录面向对象的魔法对象魔法方法笔试题元类简介创建类的两种方式元类定制类的产生行为元类定制对象的产生行为魔法方法之双下new设计模式简介面向对象的魔法对象魔法方法......
  • 剑指offer——Day01
    Day12022.11.809.用两个栈实现队列自己实现直接通过一个vector容器粗暴实现,时间复杂度相对较高,虽然空间复杂度较低代码如下:classCQueue{vector<int>vec1;......
  • 2022 杭电杯(7) I Counting Good Arrays
    本题是2022CCPCF题的强化版.给出一个n,m求出所有长度小于等于n的数列\(a_k(k\len)\)且\(a_k\lem\)且\(a_i|a_{i+1}\)固定n显然可以发现对于m的标准分解\(m=p_1^{k......
  • 【Leetcode】 剑指offer:链表(简单)--Day02
    剑指Offer06.从尾到头打印链表可借助栈。或先遍历列表得到元素数,开辟数组空间倒序填入。剑指Offer24.反转链表可借助栈:classSolution{publicListNodere......
  • 如何在VS2022中添加SVN插件
    1、现在官网下载适合你VS版本的SVN插件https://www.visualsvn.com/visualsvn/download/2、关闭打开的VS,并运行刚下载的SVN插件3、再次打开VS2022并选择VisualSVN  ......
  • SimpleDateFormat线程安全问题排查
    一.问题现象运营部门反馈使用小程序配置的拉新现金红包活动二维码,在扫码后跳转至404页面。二.原因排查首先,检查扫码后的跳转链接地址不是对应二维码的实际URL,根据代......
  • 20221108
    网站运维runoob好像啥都没讲一个网站开发人员必须掌握的知识是什么?HTML和CSS客户端脚本-JavaScriptandtheDOM服务端脚本-ASP,PHPXML和SQLhttps://www......
  • Eclipse_2022_09 版本 反编译插件
      eclipse包地址:https://www.eclipse.org/downloads/packages/截图如下:  最新版的eclipse中自带class反编译功能。  可自行选择对应的反编译插件类型 ......