Java守护线程与yield优先级

版权声明:LemonSnm https://blog.csdn.net/LemonSnm/article/details/90083978

1、守护线程

public final void setDaemon(boolean on):

将此线程标记为守护线程或者用户线程 。当运行的唯一线程都是守护进程线程时,Java虚拟机将退出。

true:为守护线程,false为用户进程。一般默认为用户进程 

通俗的讲:守护线程好比辅助,它负辅助用户线程,当用户线程都结束了,要辅助也就没用了,JVM就会关闭 

线程分为两种:

守护线程、用户线程。

当进程中没有用户线程时,JVM会退出 

 代码示例:

package com.lemon;

public class ThreadDemo3 {

    public static void main(String[] args) throws InterruptedException {

        MyRunnable4 r = new MyRunnable4();
        Thread t = new Thread(r);

        //线程分为两种:守护线程和用户线程。当进程中没有用户线程时,JVM会退出
        t.setDaemon(true); //把线程设置为守护线程
        t.start();   // 等待CPU调度 启动线程
        for (int i = 0; i < 50; i++) {
            System.out.println("Main:" + i);
            Thread.sleep(200);   //线程休眠200毫秒
        }
    }
}

class MyRunnable4 implements Runnable{

    @Override
    public void run() {
        for (int i = 0; i < 50; i++) {
            System.out.println("MyRunnable4:" + i);
            try {
                Thread.sleep(500);  //线程休眠500毫秒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

 其他方法:

MyRunnable4 r = new MyRunnable4();
        Thread t = new Thread(r);

isDaemon()); //判断是否为守护线程

System.out.println(t.isDaemon()); //判断是否为守护线程

yield() :让出本次CUP执行的时间片

   if(i %5==0){
                Thread.yield(); //让出本次CUP执行时间片
            }

setName改变线程的名称,使之与参数name相同:

 t.setName("MyThread");

isAlive()判断线程是否处于活动状态

  System.out.println(t.isAlive()); //判断线程是否处于活动状态

t.setPriority // 设置优先级

优先级高:可以提高该线程抢占CPU时间片的概率

Thread.MAX_PRIORITY   大

Thread.MIN_PRIORITY  小

Thread.NORM_PRIORITY​​​​​​​  默认

不设置就是默认

  //优先级高:可以提高该线程抢占CPU时间片的概率
        t.setPriority(Thread.MAX_PRIORITY); // 最大优先级

猜你喜欢

转载自blog.csdn.net/LemonSnm/article/details/90083978
今日推荐