Day13_64_线程的优先级
线程的调度
* 单核CPU在某一时刻只能执行一条指令,线程只有得到CPU的时间片,也就是使用权,才可以执行指令
* 在单核CPU的机器上线程不是并行运行的,而是频繁切换运行的,只有在多个CPU上线程才可能并行运行。
* Java虚拟机要负责线程的调度,取得CPU的使用权,目前有两种调度模式:**分时式调度模式** 和 **抢占式调度模式**, **java是后者**
* 两种调度模式:
- 分时式调度模式:所有线程轮流获得CPU的使用权,平均分配每个线程所占用CPU的时间片
- 抢占式调度模式:优先让优先级高的线程使用CPU,如果所有线程的优先级相同,会随机选择一个,优先级高的线程获取的CPU时间片相对多一些。
线程的优先级
线程优先级分为三种, 最高优先级是10, 最低优先级是1, 默认优先级是5.
MAX_PRIPRITY 最高 System.out.println(Thread.MAX_PRIORITY); 10
MIN_PRIORITY 最低 System.out.println(Thread.MIN_PRIORITY); 1
NORM_PRIORITY 默认 System.out.println(Thread.NORM_PRIORITY); 5
设置线程的优先级
查看当前线程的优先级: 线程对象.getPriority()
设置线程优先级: 线程对象.setPriority(int newPriority) 例如: t1.setPriority(10); //优先级设置为10 最高优先级
代码实例
package com.shige.Thread; public class ThreadTest04 {
public static void main(String[] args) { //获取当前线程对象,并重写起一个名字
Thread.currentThread().setName("主线程"); //创建一个线程对象
Thread thread=new Thread(new Processor_4()); //给thread线程重新起一个名字
thread.setName("副线程1"); //创建第二个线程对象
Thread thread1=new Thread(new Processor_4()); //给thread1线程重新起一个名字
thread1.setName("副线程2"); //查看当前线程的优先级
System.out.println(Thread.currentThread().getPriority()); //主线程优先级 5
System.out.println(thread.getPriority()); //thread线程优先级 5
System.out.println(thread1.getPriority()); //thread1线程优先级 5 //设置线程优先级
Thread.currentThread().setPriority(1);
thread.setPriority(10);
thread1.setPriority(2); //启动线程
thread.start();
thread1.start(); //主线程 对比for循环
for (int i = 0; i < 50; i++) {
System.out.println(Thread.currentThread().getName()+"------>"+i); } //优先级常量 System.out.println(Thread.MAX_PRIORITY); //10
System.out.println(Thread.MIN_PRIORITY); //1
System.out.println(Thread.NORM_PRIORITY); //5 }
}
//定义一个线程,实现Runnable接口
class Processor_4 implements Runnable{
//实现run()方法
@Override
public void run() {
for (int i = 0; i <50 ; i++) {
//获取当前线程名字,并输出i值
System.out.println(Thread.currentThread().getName()+"------------->"+i);
}
}
}
Day13_64_线程的优先级的更多相关文章
- C#夯实基础之多线程三:线程的优先级
一.为什么需要优先级--线程调度的问题 在现实生活中,优先级是一个很常见的现象:在火车站,如果你是孕妇,你是可以走进站中的专门绿色通道的,可以提前上火车以免拥挤:火警119匪警110出警的时候,都是人 ...
- java 22 - 6 多线程之线程调度和设置线程的优先级
线程调度 假如我们的计算机只有一个 CPU,那么 CPU 在某一个时刻只能执行一条指令,线程只有得到 CPU时间片,也就是使用权,才可以执行指令. 那么Java是如何对线程进行调用的呢? 线程有两种调 ...
- java 线程的优先级
//线程的优先级 //线程1 class xc1 implements Runnable{ public void run(){ for(int i=0;i<20;i++){ System.ou ...
- java笔记--查看和修改线程的优先级
查看和修改线程的优先级 java中每一个线程都有优先级属性,在默认情况下,新建的线程的优先级与创建该线程的线程优先级相同.每当线程调度器选择要运行的线程时,通常选择优先级较高的线程. 注:线程的优先级 ...
- Android(java)学习笔记63:线程的优先级
1. Java线程的优先级从1到10级别,值越大优先级越高线程默认优先级是5.值越大优先级越高 (1) 继承自Thread类创建线程类: package cn.itcast_04; public cl ...
- Java 并发 线程的优先级
Java 并发 线程的优先级 @author ixenos 低优先级线程的执行时刻 1.在任意时刻,当有多个线程处于可运行状态时,运行系统总是挑选一个优先级最高的线程执行,只有当线程停止.退出或者由于 ...
- JAVA之旅(十五)——多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止
JAVA之旅(十五)--多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止 我们接着多线程讲 一.生产者和消费者 什么是生产者和消费者?我们 ...
- Linux-pthread如何设置线程的优先级
设置线程优先级的函数: int pthread_setschedparam(pthread_t target_thread, int policy, const struct sched_param ...
- 7.线程id,优先级讲解
1.线程id可以通过Thread对象的getId()方法得到,在线程出了问题,为什么CPU占用这么高的时候,查的时候我们可以在堆栈信息中找到对应线程,然后干掉该线程就好! 2.而线程对象的getNam ...
随机推荐
- spring-ioc注解-理解2 零配置文件
没有xml配置文件下的对象注入,使用到一个Teacher类,Config配置类,Test测试类. 1.Teacher类 import lombok.Data; import org.springfra ...
- pdf转换成文本解决格式不统一问题
pdf转换成文本解决格式不统一问题 懒得调OCR服务了,所以快速解决的方法是: pdf转png:https://pdf2png.com/zh/ png转统一格式pdf:adobe acrobat自带增 ...
- SpringCloud(四):服务注册中心Eureka Eureka高可用集群搭建 Eureka自我保护机制
第四章:服务注册中心 Eureka 4-1. Eureka 注册中心高可用集群概述在微服务架构的这种分布式系统中,我们要充分考虑各个微服务组件的高可用性 问题,不能有单点故障,由于注册中心 eurek ...
- Linux 切换 shell
查看当前已安装的shell [root@CentOSv64 my]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tc ...
- BurpSuite生成快捷方式
Win下 在win系统写个脚本,能方便快捷的打开burp. burp.bat @echo oFF if "%1" neq "1" ( >"%te ...
- 剑指 Offer 43. 1~n 整数中 1 出现的次数 + 数位模拟 + 思维
剑指 Offer 43. 1-n 整数中 1 出现的次数 Offer_43 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author ...
- 【Azure 云服务】Azure Cloud Service在发布新部署后遇见不能RDP(远程连接)到实例时如何处理?
Azure 云服务是PaaS 的一个示例. 与 Azure 应用服务一样,此技术设计用于支持可缩放.可靠且运营成本低廉的应用程序. 同样,应用服务托管在虚拟机 (VM) 上,Azure 云服务也是如此 ...
- C#深度复制和浅度复制
C#深度复制和浅度复制 复制一个值变量很简单,新建一个变量然后将原来的变量赋值过去就行,但是复制一个引用变量这种方法是不行的,如果不明白为什么可以先看看这篇解释 引用类型变量和值类型变量在赋值时的不同 ...
- 自己动手实现springboot运行时新增/更新外部接口
最近有个需求:需要让现有springboot项目可以加载外部的jar包实现新增.更新接口逻辑.本着拿来主义的思维网上找了半天没有找到类似的东西,唯一有点相似的还是spring-loaded但是这个东西 ...
- 基于CefSharp开发浏览器(九)浏览器历史记录弹窗面板
一.前言 前两篇文章写的是关于浏览器收藏夹的内容,因为收藏夹的内容不会太多,故采用json格式的文本文件作为收藏夹的存储方式. 关于浏览器历史记录,我个人每天大概会打开百来次网页甚至更多,时间越长历史 ...