[19/04/08-星期一] 多线程_线程的优先级(Priority) 和 守护线程(Daemon)
一、概念
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)的更多相关文章
- day36 joinablequeue、多线程理论、多线程的两种使用方式、守护线程、互斥锁、死锁、递归锁、信号量
1.joinablequeue队列 joinablequeue与queue一样,也是一种队列,其继承自queue,也有queue中的put 与get 方法,但是在joinablequeue中有自己的 ...
- Python3学习之路~9.2 操作系统发展史介绍、进程与线程区别、线程语法、join、守护线程
一 操作系统发展史介绍 参考链接:http://www.cnblogs.com/alex3714/articles/5230609.html 二 进程与线程 进程: 对各种资源管理的集合 就可以称为进 ...
- 第三十三天- 线程创建、join、守护线程、死锁
1.线程,线程创建 概念:在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程,线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程,车间负责 ...
- day 33 什么是线程? 两种创建方式. 守护线程. 锁. 死锁现象. 递归锁. GIL锁
一.线程 1.进程:资源的分配单位 线程:cpu执行单位(实体) 2.线程的创建和销毁开销特别小 3.线程之间资源共享,共享的是同一个进程中的资源 4.线程之间不是隔离的 5.线程可不需 ...
- 从头认识java-18.2 主要的线程机制(5)-守护线程与非守护线程
这一章节我们来讨论一下守护线程与非守护线程. 1.什么是守护线程?什么是非守护线程? 非守护线程:Java虚拟机在它全部非守护线程已经离开后自己主动离开. 守护线程:守护线程则是用来服务用户线程的,假 ...
- 26_多线程_第26天(Thread、线程创建、线程池)_讲义
今日内容介绍 1.多线程 2.线程池 01进程概念 A:进程概念 a:进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行, 即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能 ...
- java中线程分两种,守护线程和用户线程。
java中线程分为两种类型:用户线程和守护线程. 通过Thread.setDaemon(false)设置为用户线程: 通过Thread.setDaemon(true)设置为守护线程. 如果不设置次属性 ...
- Java多线程系列--“基础篇”10之 线程优先级和守护线程
概要 本章,会对守护线程和线程优先级进行介绍.涉及到的内容包括:1. 线程优先级的介绍2. 线程优先级的示例3. 守护线程的示例 转载请注明出处:http://www.cnblogs.com/skyw ...
- java多线程-概念&创建启动&中断&守护线程&优先级&线程状态(多线程编程之一)
今天开始就来总结一下Java多线程的基础知识点,下面是本篇的主要内容(大部分知识点参考java核心技术卷1): 1.什么是线程以及多线程与进程的区别 2.多线程的创建与启动 3.中断线程和守护线程以及 ...
随机推荐
- centos下不重装php——给PHP添加新扩展库
装完php.发现需要一些新扩展库比如常见的mysqli之类的.在不重装php安装新扩展,以一个不常用的库xsl为例. 环境:centos6.8,php5.3.29 ,osx10.11.6 我的php相 ...
- type=file的change事件只能执行一次的解决方案
最近帮朋友做个项目中遇到了type=file change事件只能执行一次的问题,度娘了一下,发现提供了各种解决方案,所以决定记录一下我的思考方向和最终解决方式. 起初帮朋友做个项目,项目中遇到上传文 ...
- Rabbit主题交换机
主题交换机类型为:topic. 是直连交换机的一种.只是比直连交换机更灵活,在路由键上引入了通配符的概念 topic交换机支持通配符的路由键. *表示匹配一个词. #匹配所有 生产者 : packag ...
- pom文件解析
Maven的依赖是使用Maven坐标来定位的,而Maven坐标主要由GAV(groupId, artifactId, version)构成.因此,使用任何一个依赖之间,你都需要知道它的Maven坐标. ...
- Java 使用Log4J进行日志操作
使用Log4J进行日志操作 Log4J简介 Log4J是Apache的一个开放源代码项目,它是一个日志操作包,通过使用Log4J,可以指定日志信息输出的目的地,如控制台.文件.CUI组件.NT ...
- [MFC]选择目录对话框和选择文件对话框
在MFC编程中经常会需要用到选择目录和选择文件的界面,以下总结一下本人常用的这两种对话框的生成方法: 选择目录对话框 //选择目录按钮void CDcPackerDlg::OnBnClickedDec ...
- 关于使用ajax上传图片问题
今天需要做一个上传图片的功能,由于框架里面没有带,上网搜了下.看到有spring mvc的图片上传,而且有例子,刚好是自己需要的,直接粘贴复制下.参考: http://blog.csdn.net/lu ...
- 插入mysql语句报错:1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
插入一个很简单的sql语句时候,mysql一直报错: [SQL] INSERT INTO ORDER ( id, activity_id, order_type, phone, order_amoun ...
- 64位Navicat Premium-11.2.7(64bit)访问64位Oracle服务器
1 在windows 10 64位操作系统安装Navicat Premium-11.2.7(64bit). 2 在服务器安装64位的Oracle(win64_11gR2_database). 3 在h ...
- Ssh 证书验证登录
一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器.但是,一般的密码方式登录,容易有密码被暴力破解的问题.所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 ...