java的调度、优先级setPriority、yield、jion和守护线程setDaemon

本文通过示例代码展示了Java中线程的优先级设置、yield方法及join方法的使用方式,并介绍了守护线程的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

package LyfPractice;

/**
 * Created by fangjiejie on 2016/12/15.
 */
public class SThread {
    public static void main(String[] args) {
       /* S s1=new  S();
        S s2=new  S();
        s1.setName("s1号");
        s2.setName("s2号");
        s1.setPriority(10);
        s2.setPriority(1);
        s1.start();
        s2.start();*/
        ![这里写图片描述](http://img.blog.youkuaiyun.com/20161215214214639?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU3R1YmJvcm5BY2NlcHRlZA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)M3 m3=new M3();
        m3.setDaemon(true);//设置为守护线程
        m3.start();
        M1 m1=new M1();
        M2 m2=new M2();
        m1.setName("m1号线程");
        m2.setName("m2号线程");
        m1.setPriority(10);
        m2.setPriority(1);//设置线程的优先级1~10
        m1.start();
        m1.yield();//yield明确的让出当前线程的控制权
        m2.start();
        try {
            m1.join();//当在某个程序执行流中调用其他线程的jion()方法时,调用线程将被阻塞,直到jion方法加入的 jion线程完成为止
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        for(int i=100;i>=0;i--){
            System.out.println(Thread.currentThread().getName()+"hahahahaha");
        }
    }
}
class M1 extends Thread{
    @Override
    public void run() {
        for(int i=100;i>=0;i--){

            System.out.println(Thread.currentThread().getName()+": "+i);
        }
    }
}
class M2 extends Thread{
    @Override
    public void run() {
        for(int i=0;i<=100;i++){
            //this.yield();
       System.out.println(Thread.currentThread().getName()+": "+i);
        }
    }
}
class M3 extends Thread{
    @Override
    public void run() {
        for(int i=0;i<10000;i++){
            System.out.println(">>");
        }
    }
}

setPriority():
更改线程的优先级。
线程总是存在优先级,优先级范围在1~10之间。JVM线程调度程序是基于优先级的抢先调度机制。在大多数情况下,当前运行的线程优先级将大于或等于线程池中任何线程的优先级。但这仅仅是大多数情况。

yield() :
Yield()方法是暂停当前线程,让同等优先权的线程运行。如果没有同等优先权的线程,那么Yield()方法将不会起作用。
因此,使用yield()的目的是让相 同优先级的线程之间能适当的轮转执行。但是,实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。
join()方法:
保证当前线程停止执行,直到该线程所加入的线程完成为止。在执行下一个线程

守护线程:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值