java笔记--查看和修改线程的优先级
查看和修改线程的优先级
java中每一个线程都有优先级属性,在默认情况下,新建的线程的优先级与创建该线程的线程优先级相同。
每当线程调度器选择要运行的线程时,通常选择优先级较高的线程。
注:线程的优先级是高度依赖于操作系统的,而且Sun对于不同的操作系统提供的虚拟机并不完全相同
--如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3893981.html "谢谢--
java JVM将线程的等级分为10级,MIN_PRIORITY为1级,MAX_PRIORITY为10级
对于main线程,它的默认优先级是5,最好不要修改线程的默认优秀级。
如果线程中有几个高优先级的线程,运行时优先选择这些线程运行;
若还有低优先级的线程,就会出现"饥饿"状态,即低优先级的线程基本不会被执行
Thread类与线程优先级相关的属性和方法:
MAX_PRIORITY : 线程可以具有最高优先级
MIN_PRIORITY : 线程可以具有的最低优先级
NORM_PRIORITY : 分配给线程的默认优先级
getPriority() : 获得线程的优先级
setPriority() : 修改线程的优先级
代码实例:
package com.xhj.thread;
import java.util.Scanner;
/**
* 查看和修改线程的优先级
*
* @author XIEHEJUN
*
*/
public class ModifyThreadPriority {
/**
* 获取并打印输出当前所有运行中的线程,包括(线程ID,线程名称,线程优先级)
*
* @return
*/
public static Thread[] getThreads() {
ThreadGroup group = Thread.currentThread().getThreadGroup();
Thread[] threads = new Thread[group.activeCount()];
group.enumerate(threads);
System.out.println("线程ID\t" + "线程名称\t" + "线程优先级");
for (Thread thread : threads) {
System.out.println(thread.getId() + "\t" + thread.getName() + "\t"
+ thread.getPriority());
}
return threads;
}
/**
* 数据输入入口
*
* @return
*/
public static String input() {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
return str;
}
/**
* 修改线程优先级
*
* @param threads
*/
public static void modifyPriority(Thread[] threads) {
System.out.println("请输入您要修改的线程的ID");
int i = Integer.parseInt(input());
int count = -1;
for (Thread thread : threads) {
if (thread.getId() == i) {
System.out.println("请输入您要修改成的优先级别:");
int priroty = Integer.parseInt(input());
thread.setPriority(priroty);
break;
} else {
count++;
}
}
if (count == threads.length - 1) {
System.out.println("找不到您要的线程");
}
getThreads();
}
public static void main(String[] args) {
modifyPriority(getThreads());
}
}
java笔记--查看和修改线程的优先级的更多相关文章
- java笔记--查看和修改线程名称
查看和修改线程名称 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3893797.html "谢谢-- java是一种允许 ...
- java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程 ThreadLocal在我的笔记"关于线程同步"的第5种方式里面有介绍,这里就不多说了. ...
- java笔记--使用事件分配线程更新Swing控件
使用事件分配线程更新Swing控件: Swing并不是线程安全的,如果在多个线程中更新Swing控件,则很可能造成程序崩溃. 为了避免这种问题,可以使用时间分配线程来更新Swing控件. EventQ ...
- Java笔记(十)堆与优先级队列
优先级队列 一.PriorityQueue PriorityQueue是优先级队列,它实现了Queue接口,它的队列长度 没有限制,与一般队列的区别是,它有优先级概念,每个元素都有优先 级,队头的元素 ...
- JAVA下查看进程中线程占用CPU较高的代码
执行以下代码获得进程的线程.并找到CPU占用较高的线程ID ps -mp 16935 -o THREAD,tid,time 执行以下代码,通过线程ID获得16进制的线程标识 printf &quo ...
- Windows内核驱动--实现修改线程优先级demo
在User下修改优先级比较麻烦,该驱动可以直接用线程ID,和优先级级数两个参数直接修改线程的优先级: Client代码: #include <Windows.h> #include < ...
- C#夯实基础之多线程三:线程的优先级
一.为什么需要优先级--线程调度的问题 在现实生活中,优先级是一个很常见的现象:在火车站,如果你是孕妇,你是可以走进站中的专门绿色通道的,可以提前上火车以免拥挤:火警119匪警110出警的时候,都是人 ...
- 编写高质量代码改善C#程序的157个建议——建议76: 警惕线程的优先级
建议76: 警惕线程的优先级 线程在C#中有5个优先级:Highest.AboveNormal.Normal.BelowNormal和Lowest.讲到线程的优先级,就会涉及线程的调度.Windows ...
- Java如何查看线程的优先级?
Java编程中,如何查看线程的优先级? 以下示例演示如何使用Thread类的getPriority()方法检查线程的优先级. package com.yiibai; public class Thre ...
随机推荐
- 二级联动banner【墨芈原创,大神勿喷】
这个banner效果在几个月前都做了,不过因为代码添乱,而且不宜调用就没发布,经过2周时间间间断断的编写,插件终于搞定了,除框架外其它都开源发布,至于框架没给源码是因为还没做好,后期做好了也会发布出来 ...
- EF实体框架之CodeFirst五
上一博客学习了下基本的约定配置,留下几个遗漏的,这篇就是学习下遗漏一复杂类型. 一.什么是复杂类型? 书中说道:“复杂类型也可视作值类型(?)可以作为附加属性添加到其他类.复杂类型与实体类型的区别在于 ...
- IT男的”幸福”生活"续9
世界上最容易失去的便是时间了,我们总是蓦然回首,而时间早已流去. 曾经的种种,时时刻刻在我们脑中出现,让我们感到开心,快乐,幸福等. 有时好想有一种动冲,回到过去,再感受一下心中的那份触动. 又一年过 ...
- 微信小程序「官方示例代码」浅析【上】
从某个微信群里,拿到了这个IDE的下载地址,然后就有了这个: 根本登不上去,怎么办,怎么办呢? 看代码啊... 反正我又没有保密协议,解压缩一看NodeWebkit + React: 好啦 ,逛逛呗, ...
- Bootstrap系列 -- 36. 向上弹起的下拉菜单
有些菜单是需要向上弹出的,比如说你的菜单在页面最底部,而这个菜单正好有一个下拉菜单,为了让用户有更好的体验,不得不让下拉菜单向上弹出.在Bootstrap框架中专门为这种效果提代了一个类名“dropu ...
- 数据库SQL Server DAC 导入导出数据到SQL Azure问题
对Export data-tier application报错的处理 Error:SQL71564 这个问题是数据库中一些对象如MS_Description,MS_DiagramPane1不支持DAC ...
- C# JArray与JObject 的使用 json [{}]
C# JArray与JObject 的使用 STEP1.using Newtonsoft.Json.Linq; STEP2 如何获取json里的某个属性(节点)值,对其删改,新增 //2.1 数组用J ...
- HOW TO REMOTELY DEBUG APPLICATION RUNNING ON TOMCAT FROM WITHIN INTELLIJ IDEA
This post would look into how to tackle and debug issues in scenarios where they only occur in produ ...
- iOS-集成阿里百川IMSDK的服务端及客户端
搜了一下阿里百川, 发现文档很少, 于是就打算写一篇博客, 供后来者少华一些时间在集成和开发上. 客户端集成很简单, 官方文档写的也很清楚. 客户端的集成 Step1 下载SDK包 如果您已经获得De ...
- zabbix_agent安装(Centos+Ubuntu)
Centos安装 安装依赖包 yum -y install mysql-devel libcurl-devel net-snmp-devel 添加用户 groupadd zabbix use ...