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