5、守护线程与yield、其它方法与优先级
守护线程与yield
public final void setDaemon(boolean on)
将此线程标记为daemon线程或用户线程。 当运行的唯一线程都是守护进程线程时,Java虚拟机将退出。
public final boolean isDaemon()
测试这个线程是否是守护线程。
public static void yield()
暂停当前正在执行的线程对象,并执行其他线程。(了解)
其它方法与优先级
long getId()
返回该线程的标识符。
String getName()
返回该线程的名称。
void setName(String name)
改变线程名称,使之与参数 name 相同。
boolean isAlive()
测试线程是否处于活动状态。
void setPriority(int newPriority)
更改线程的优先级。
static int MAX_PRIORITY
线程可以具有的最高优先级。
static int MIN_PRIORITY
线程可以具有的最低优先级。
static int NORM_PRIORITY
分配给线程的默认优先级。
public class ThreadDemo3 {
public static void main(String[] args) throws InterruptedException {
MyRunnable4 mr=new MyRunnable4();
Thread t=new Thread(mr);
//线程可以分成守护线程和用户线程:当运行的唯一线程都是守护进程线时,java虚拟机退出
t.setDaemon(true);//把线程设置为守护线程
//判断线程是否处于活跃状态
System.out.println(t.isAlive());//返回false
t.start();
System.out.println(t.isAlive());//返回true
//优先级setPriority;MAX_PRIORITY最大优先级
//优先级高可以提高改线程抢到cup时间片的概率
t.setPriority(Thread.MAX_PRIORITY);
for (int i = 0; i <50 ; i++) {
System.out.println("main"+i);
Thread.sleep(300);
}
//
// if( i==5){
// Thread.yield();//让出本次操CPU执行时间
// }
}
}
class MyRunnable4 implements Runnable{
@Override
public void run() {
for (int i = 0; i < 50; i++) {
System.out.println("--"+i);
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}