---------------------------------------------java线程的加入、等待和守护-----------------------------------
加入线程
void | join() |
void | join(long millis) |
void | join(long millis, int nanos) |
Join线程会抢先拿到CPU来执行线程,然后其他的线程再来执行。
public class JoinTest {
public static void main(String[] args) {
JoinThread pt = new JoinThread();
JoinThread pt1 = new JoinThread();
JoinThread pt2 = new JoinThread();
pt2.start();
try {
//join线程会抢先拿到cpu来执行线程,然后其他线程再来执行
//通过join方法让线程2优先执行
pt2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
pt.start();
pt1.start();
}
}
---------------------------------------------------------
等待线程
static void | yield() |
当前的线程从运行阶段回到就绪阶段,目的是把CPU资源让给其他的线程。
public class YieldThread extends Thread{
@Override
public void run() {
for (inti = 0; i <50; i++) {
System.out.println(this.getName() + "正在运行" + i);
//当前线程回到就绪状态,然后其他线程来执行
Thread.yield();
}
}
}
----------------------------------------------------------------
守护线程
void | setDaemon(boolean on) |
守护线程会随着主线程的结束而结束。
public class DaemonTest {
public static void main(String[] args) {
DaemonThread pt = newDaemonThread();
DaemonThread pt1 = new DaemonThread();
//设置成守护线程
pt.setDaemon(true);
pt1.setDaemon(true);
pt.start();
pt1.start();
for (inti = 0; i <10; i++) {
System.out.println(Thread.currentThread().getName()+ "主线程正在运行" + i);
}
}
}