美文网首页
java.lang.Thread类解读

java.lang.Thread类解读

作者: 圆滚滚_8e70 | 来源:发表于2019-02-14 15:19 被阅读0次
    1. 一个thread实例就是一个程序的可执行线程。JVM允许一个应用程序拥有多个线程并发执行
    2. 每个线程都有一个优先级(priority),高优先级的线程会比低优先级的线程更早的 \color{red}{注意:优先级范围为1 - 9},创建线程时,默认继承父线程的优先级,main线程的优先级默认为5。线程的优先级只能保护程序内的优先级,不能保证整个操作系统内的优先级。某线程在windows上可能是高优先级,在linux上可能是低优先级。但不影响程序内的优先级顺序。
    3. 线程可以被标记为守护线程。守护线程中创建的线程必定是守护线程。(什么是守护线程呢?守护线程就是主线程结束时,守护线程会跟着主线程一起结束。)

    Demo for 2:
    写了个demo来验证观点2 ()

    public class PriorityThreadTestDemo {
    
        public static void main(String[] args) {
            PriorityTestThread thread1 = new PriorityTestThread("Thread1");
            PriorityTestThread thread2 = new PriorityTestThread("Thread2");
            thread1.setPriority(5);
            thread2.setPriority(9);
            thread1.start();
            thread2.start();
        }
    }
    public class PriorityTestThread extends Thread{
    
        public PriorityTestThread(String name) {
            super(name);
        }
    
        @Override
        public void run(){
            System.out.println("thread " + this.getName() + " running.");
        }
    }
    
    

    按预计线程2的优先级比线程1的高,所以应该
    执行结果出人意料,并不是说优先级高的会先执行.
    执行结果1:

    thread Thread1 running.
    thread Thread2 running.
    

    执行结果2:

    thread Thread2 running.
    thread Thread1 running.
    
    那观点2 具体是什么意思呢?为什么执行的结果和说明不一致呢?

    其实线程的优先级只会在线程之间竞争CPU的时候产生作用,并发请求CPU时,高优先级的线程优先于低优先级的线程。

    相关文章

      网友评论

          本文标题:java.lang.Thread类解读

          本文链接:https://www.haomeiwen.com/subject/tljcsqtx.html