Java守护线程与yield优先级

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); // 最大优先级

 

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值