zoukankan      html  css  js  c++  java
  • 7.线程id,优先级讲解

    1.线程id可以通过Thread对象的getId()方法得到,在线程出了问题,为什么CPU占用这么高的时候,查的时候我们可以在堆栈信息中找到对应线程,然后干掉该线程就好!

    2.而线程对象的getName方法可以获得该线程的线程名,线程名默认是Thread-数字,当然我们也可以自己指定线程名!

        public final String getName() {
            return String.valueOf(name);
        }
    

    3.可以通过线程对象的getPriority方法获取当前该线程的优先级,如下所示:

        public final int getPriority() {
            return priority;
        }
    

    4.可以通过getState方法获取当前对象的状态信息

        public State getState() {
            // get current thread state
            return sun.misc.VM.toThreadState(threadStatus);
        }
    

      如下代码演示上述四个方法:

    package com.bawei.multithread;
    
    public class ThreadSimpleApi {
    	public static void main(String[] args) {
    		Runnable run =new Runnable(){
    			@Override
    			public void run() {
    				System.out.println("这是线程1!");
    				try {
    					Thread.sleep(100000);
    				} catch (InterruptedException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		};
    		Thread t = new Thread(run,"号啊");
    		t.start();
    		System.out.println("ThreadName: "+t.getName()+" ThreadId:"+t.getId()+
    				" ThreadPriority:"+t.getPriority()+"ThreadState:"+t.getState());
    	}
    }
    

     注意:进程也是有优先级的,从我们如下的任务管理器界面中我们可以看到优先级问题,有的进程优先级高,有的进程优先级低,有些软件我们用360的东西杀它但是就是干不掉,就是因为它的优先级比较高!

    Java线程:线程的调度-优先级

    与线程休眠类似,线程的优先级仍然无法保障线程的执行次序。只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行。
    线程的优先级用1-10之间的整数表示,数值越大优先级越高,默认的优先级为5。
    在一个线程中开启另外一个新线程,则新开线程称为该线程的子线程,子线程初始优先级与父线程相同。
    package com.bawei.multithread;
    
    class ThreadSimpleApi { 
            public static void main(String[] args) { 
                    Thread t1 = new MyThread1(); 
                    Thread t2 = new Thread(new MyRunnable()); 
                    t1.setPriority(10); 
                    t2.setPriority(1); 
    
                    t2.start(); 
                    t1.start(); 
            } 
    } 
    
    class MyThread1 extends Thread { 
            public void run() { 
                    for (int i = 0; i < 10; i++) { 
                            System.out.println("线程1第" + i + "次执行!"); 
                            try { 
                                    Thread.sleep(100); 
                            } catch (InterruptedException e) { 
                                    e.printStackTrace(); 
                            } 
                    } 
            } 
    } 
    
    class MyRunnable implements Runnable { 
            public void run() { 
                    for (int i = 0; i < 10; i++) { 
                            System.out.println("线程2第" + i + "次执行!"); 
                            try { 
                                    Thread.sleep(100); 
                            } catch (InterruptedException e) { 
                                    e.printStackTrace(); 
                            } 
                    } 
            } 
    }
    

      

      

  • 相关阅读:
    Hadoop环境搭建2_hadoop安装和运行环境
    Hadoop环境搭建1_JDK+SSH
    Linux5_环境变量
    Linux4_文件操作
    Linux3_文件系统
    Linux2_小技巧
    Linux1_Ubuntu的安装
    PhoneGap移动开发框架
    iOS 使用GitHub托管代码(github desktop使用)
    MRC和ARC混编
  • 原文地址:https://www.cnblogs.com/python-machine/p/7267153.html
Copyright © 2011-2022 走看看