注意:
线程分为 守护线程和用户线程 ,当程序中没有用户线程时,JVM会退出.
方法 | 内容 |
---|---|
void setDaemon(boolean on) | 将该线程标记为守护线程或用户线程 |
boolean isDeamon() | 测试该线程是否为守护线程。 |
void yield() | 暂停当前正在执行的线程对象,并执行其他线程。(让出本次cpu执行的时间片) |
☆ void setDaemon(boolean on)
-
作用:
将该线程标记为守护线程或用户线程。 当正在运行的线程都是守护线程时(当程序中没有用户进程在运行时),Java 虚拟机退出。 该方法必须在启动线程前调用。
-
参数:
on - 如果为 true,则将该线程标记为守护线程;如果为 false,则将该线程标记为用户线程.
☆ boolean isDeamon()
-
作用:
测试该线程是否为守护线程。
-
返回:
如果该线程是守护线程,则返回 true;否则返回 false。
☆ void yield()
-
作用:
暂停当前正在执行的线程对象,并执行其他线程。(让出本次cpu执行的时间片) (并没有什么卵用)
案例:
package com.DuoXianCheng;
import com.sun.xml.internal.ws.runtime.config.TubelineFeatureReader;
import sun.text.resources.cldr.es.FormatData_es_419;
public class ThreadDemo3 {
/**
* ☆ void setDaemon(boolean on)
* 将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时(当程序中没有用户进程在运行时),
* Java 虚拟机退出。该方法必须在启动线程前调用。
* 参数:
* on - 如果为 true,则将该线程标记为守护线程;如果为 false,则将该线程标记为用户线程.
* ☆ boolean isDeamon()
* 测试该线程是否为守护线程。
* 返回:
* 如果该线程是守护线程,则返回 true;否则返回 false。
* ☆ void yield()
* 暂停当前正在执行的线程对象,并执行其他线程。(让出本次cpu执行的时间片)
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
MyRunnable3 myRunnable3=new MyRunnable3();
Thread thread=new Thread(myRunnable3);
/* 线程分为 守护线程和用户线程 ,当程序中没有用户线程时,JVM会退出. */
thread.setDaemon(true);//把线程设置为守护线程
thread.start();
for (int i = 0; i <50 ; i++) {
System.out.println("main--"+i);
Thread.sleep(200);
if (i==5||i==4){
Thread.yield();//让出本次cpu执行时间 (没什么卵用)
}
}
}
}
class MyRunnable3 implements Runnable{
@Override
public void run() {
for (int i = 0; i < 50 ; i++) {
System.out.println("->"+i);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}