本文主要是介绍java的调度、优先级setPriority、yield、jion和守护线程setDaemon,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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();*/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~10m1.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{@Overridepublic void run() {for(int i=100;i>=0;i--){System.out.println(Thread.currentThread().getName()+": "+i);}}
}
class M2 extends Thread{@Overridepublic void run() {for(int i=0;i<=100;i++){//this.yield();System.out.println(Thread.currentThread().getName()+": "+i);}}
}
class M3 extends Thread{@Overridepublic void run() {for(int i=0;i<10000;i++){System.out.println(">>");}}
}
setPriority():
更改线程的优先级。
线程总是存在优先级,优先级范围在1~10之间。JVM线程调度程序是基于优先级的抢先调度机制。在大多数情况下,当前运行的线程优先级将大于或等于线程池中任何线程的优先级。但这仅仅是大多数情况。
yield() :
Yield()方法是暂停当前线程,让同等优先权的线程运行。如果没有同等优先权的线程,那么Yield()方法将不会起作用。
因此,使用yield()的目的是让相 同优先级的线程之间能适当的轮转执行。但是,实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。
join()方法:
保证当前线程停止执行,直到该线程所加入的线程完成为止。在执行下一个线程
守护线程:
这篇关于java的调度、优先级setPriority、yield、jion和守护线程setDaemon的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!