• 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());

    }

    }

    知识重在总结和梳理,只有不断地去学习并运用,才能化为自己的东西。由于本人进阶猿类时间尚短,故此博客即是我学习,工作的笔记,也是和大家交流,相互提升技术的平台~希望大家不吝赐教~~ --但管努力,莫问前程,事在人为,功不唐捐。--和佑博客园
  • 相关阅读:
    c#泛型的使用
    关于Asp.net无法写入输出文件的原因
    利用OLEDB导出数据到Excel
    中秋祝福
    C#获取当前域用户名
    【程序员必读】骨灰级程序员20条编程经验
    SQL SERVER 2005无法远程连接的问题
    ASP.Net 实现伪静态方法及意义
    js+ajax获取文件大小
    C#遍历指定文件夹中的所有文件
  • 原文地址:https://www.cnblogs.com/XHJT/p/3893981.html
Copyright © 2020-2023  润新知