一、概念

1. 处于就绪状态的线程,会进入“就绪队列”等待JVM来挑选。

2. 线程的优先级用数字表示,范围从1到10,一个线程的缺省优先级是5。

3. 使用下列方法获得或设置线程对象的优先级。

int getPriority();

void setPriority(int newPriority);

注意:优先级低只是意味着获得调度的概率低。并不是绝对先调用优先级高的线程后调用优先级低的线程。

/**优先级低只是意味着获得调度的概率低。并不是绝对先调用优先级高的线程后调用优先级低的线程.
* 就是说手拿1000张彩票比1张彩票的中奖概率高点,但不是说1张彩票就不会中奖
* 优先级范围:数字1-10
* norm 标准的足额的
* 3个常量:NORM_PRIORITY=5(所有线程的默认值)
* MIN_PRIORITY=1
* MAX_PRIORITY=10
*
*/
package cn.sxt.thread; public class Test_0408_ThreadPriority {
public static void main(String[] args) {
MyPriority mPriority=new MyPriority();
Thread t1=new Thread(mPriority,"百度");
Thread t2=new Thread(mPriority,"阿里");
Thread t3=new Thread(mPriority,"京东");
Thread t4=new Thread(mPriority,"腾讯");
Thread t5=new Thread(mPriority,"网易");
//设置优先级一定在启动之前,优先级代表调度概率大,不代表绝对的执行的先后顺序
//即优先级大的也可能正在后边执行,只是大概率在前边执行 t1.setPriority(Thread.MAX_PRIORITY);//常量10
t2.setPriority(Thread.MIN_PRIORITY);//常量1
t3.setPriority(Thread.NORM_PRIORITY);//常量5
t4.setPriority(7);
t5.setPriority(4); t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
}
}
class MyPriority implements Runnable{ public void run() {
System.out.println(Thread.currentThread().getName()+"-->"+Thread.currentThread().getPriority()); } }

二、守护线程

/***daemon:守护神
* 守护线程:是为用户线程服务,jvm(Java虚拟机)停止时不用等待守护线程执行完毕
* 一般用来做日志等
* 默认情况下所有线程都是 用户线程,虚拟机需要等所有的用户线程执行完毕才会停止
*
*/
package cn.sxt.thread; public class Test_0408_ThreadDaemon {
public static void main(String[] args) {
Time time=new Time();
People people=new People();
Thread th=new Thread();
th.setDaemon(true);//设置用户线程为守护线程,即虚拟机不会等他执行完毕(在控制台输出语句)才停止
th.start(); new Thread(people).start(); }
} class People extends Thread{
public void run() {
for (int i = 1; i <= 12; i++) {
System.out.println(i+"月劳作");
}
System.out.println("一年结束了!");
}
}
//时间是永恒存在,守护进程,是为用户进程People服务的
class Time extends Thread{
public void run() {
for (int i = 1; i <= 24; i++) {//理论上应设置为死循环,因为时间一直都有,但这里设为24
System.out.println(i+"--时间在流逝");
}
} }

[19/04/08-星期一] 多线程_线程的优先级(Priority) 和 守护线程(Daemon)的更多相关文章

  1. day36 joinablequeue、多线程理论、多线程的两种使用方式、守护线程、互斥锁、死锁、递归锁、信号量

    1.joinablequeue队列 joinablequeue与queue一样,也是一种队列,其继承自queue,也有queue中的put 与get 方法,但是在joinablequeue中有自己的 ...

  2. Python3学习之路~9.2 操作系统发展史介绍、进程与线程区别、线程语法、join、守护线程

    一 操作系统发展史介绍 参考链接:http://www.cnblogs.com/alex3714/articles/5230609.html 二 进程与线程 进程: 对各种资源管理的集合 就可以称为进 ...

  3. 第三十三天- 线程创建、join、守护线程、死锁

    1.线程,线程创建 概念:在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程,线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程,车间负责 ...

  4. day 33 什么是线程? 两种创建方式. 守护线程. 锁. 死锁现象. 递归锁. GIL锁

    一.线程     1.进程:资源的分配单位    线程:cpu执行单位(实体) 2.线程的创建和销毁开销特别小 3.线程之间资源共享,共享的是同一个进程中的资源 4.线程之间不是隔离的 5.线程可不需 ...

  5. 从头认识java-18.2 主要的线程机制(5)-守护线程与非守护线程

    这一章节我们来讨论一下守护线程与非守护线程. 1.什么是守护线程?什么是非守护线程? 非守护线程:Java虚拟机在它全部非守护线程已经离开后自己主动离开. 守护线程:守护线程则是用来服务用户线程的,假 ...

  6. 26_多线程_第26天(Thread、线程创建、线程池)_讲义

    今日内容介绍 1.多线程 2.线程池 01进程概念 A:进程概念 a:进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行, 即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能 ...

  7. java中线程分两种,守护线程和用户线程。

    java中线程分为两种类型:用户线程和守护线程. 通过Thread.setDaemon(false)设置为用户线程: 通过Thread.setDaemon(true)设置为守护线程. 如果不设置次属性 ...

  8. Java多线程系列--“基础篇”10之 线程优先级和守护线程

    概要 本章,会对守护线程和线程优先级进行介绍.涉及到的内容包括:1. 线程优先级的介绍2. 线程优先级的示例3. 守护线程的示例 转载请注明出处:http://www.cnblogs.com/skyw ...

  9. java多线程-概念&创建启动&中断&守护线程&优先级&线程状态(多线程编程之一)

    今天开始就来总结一下Java多线程的基础知识点,下面是本篇的主要内容(大部分知识点参考java核心技术卷1): 1.什么是线程以及多线程与进程的区别 2.多线程的创建与启动 3.中断线程和守护线程以及 ...

随机推荐

  1. [转]Entity Framework Sprocs with Multiple Result Sets

    本文转自:https://msdn.microsoft.com/en-us/data/jj691402.aspx Entity Framework Sprocs with Multiple Resul ...

  2. IntelliJ IDEA 快捷键(一)(window版)

    一.高效定位代码 1.跳转 1.项目之间的跳转 Next Project Window 快捷键 Ctrl + Alt + 左方括号. Previous Project Window 快捷键 Ctrl ...

  3. EasyUI datebox 日期范围 日期关联

    jQuery EasyUI 1.4.5 html: <label>提交日期:</label> <input id="startDate" name=& ...

  4. docker 容器启动并自启动redis

    centos7.5 背景:每次开机后都要自动启动redis,也就是宿主机开机,启动容器,然后启动redis 按照网上的做法是:修改redis.conf ,修改redis的启动脚本(utils/...s ...

  5. JBPM学习第1篇:入门与安装

    1.相关关键词 BPM:全称Business Process Management,即业务流程管理 BPEL:全称为Business Process Execution Language,即业务流程执 ...

  6. 深入理解ES6之函数

    一:关于函数的参数: 可以接受任意数量的参数而无视函数声明的参数数量是js函数的独特之处. 1:参数默认值 ES6之前做法: function makeRequest(url,timeout,call ...

  7. js原生带缩略图的图片切换效果

    js原生带缩略图的图片切换效果 本例中用到的 moveElement(elementID,final_x,final_y,interval)是来自<JavaScript DOM编程艺术(中文第二 ...

  8. 关于Function原型对象和Object原型对象的一些疑惑

    网上有一道美团外卖的面试题是这样的: Function.prototype.a = 'a'; Object.prototype.b = 'b'; function Person(){}; var p ...

  9. MXNet 分布式环境部署

    MXNet 分布式环境部署 1. MxNet 分布式介绍 先忽略吧, 回头在填上去 2. 分布式部署方法 假设有两台主机ip地址分别是xxx.xxx.xxx.114 和 xxx.xxx.xxx.111 ...

  10. switch case 忘记 break

    昨天纠结了很久的问题,一直找不到原因,早上发现是一个低级错误: private void selectButton(int id) { switch (id) { case 0: recommend_ ...