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 ...
随机推荐
- struts2+Hibernate实现用户登陆功能
实现的功能,在登陆页面输入Username和PassWord后,将username和password通过Hibernate匹对数据库是否含有一样的username和password,若有则登陆进去,若 ...
- SVN快速入门(TSVN)
作者: 北京群英汇信息技术有限公司 网址: http://www.ossxp.com/ 版本: 0.1-35 日期: 2011-07-05 10:51:59 版权信息: 目录 1 安装Tortoi ...
- 一头扎进EasyUI2
惯例广告一发,对于初学真,真的很有用www.java1234.com,去试试吧! 一头扎进EasyUI第6讲 .日历组件 <div class="easyui-calendar&quo ...
- go语言指针符号的*和&
先看一段代码 先放一段代码,人工运行一下,看看自己能做对几题? package main import "fmt" func main() { var a int = 1 var ...
- Photoshop之渐变工具使用
最上面两个游标控制不透明度 下面两个控制渐变位置 点击游标可以设置颜色 基于每个游标进行操作
- cygwin 的不同文件类型显示不同的颜色
正常情况下,我们的cygwin安装好之后,不管是文件还是文件夹显示的颜色都是一样的,这样在我们平时的工作中很不方便 所以这里记录一下怎么设置成彩色的,其实很简单. 直接修改文件 .bashrc vim ...
- iOS边练边学--多线程NSOperation介绍,子类实现多线程的介绍(任务和队列),队列的取消、暂停(挂起)和恢复,操作依赖与线程间的通信
一.NSOperation NSOperation和NSOperationQueue实现多线程的具体步骤 先将需要执行的操作封装到一个NSOperation对象中 然后将NSOperation对象添加 ...
- Kettle_设置变量的两种方法
一个复杂的kettle作业一般包括很多子作业和转换,在主作业Start后通常会添加一个[设置变量]的流程,该流程的功能是为所有流程的公共变量设置通用值. 主作业添加的[设置变量]针对的是所 ...
- AMD&CMD
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- hdu1281 二分匹配
求重要的点.那就可以通过枚举来找:先做一次最大匹配,求出匹配数.然后逐一枚举这些点.如果匹配数改变,那就是重要点: #include<stdio.h> #include<string ...