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

来源:互联网 发布:谢云流传 知乎 编辑:程序博客网 时间:2024/06/02 08:17

这里写图片描述

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.csdn.net/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()方法:
保证当前线程停止执行,直到该线程所加入的线程完成为止。在执行下一个线程

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

0 0
原创粉丝点击